1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

нужен XML Parser

Тема в разделе "MAXScript", создана пользователем McST, 28 янв 2010.

Модераторы: Savin Denis
  1. McST

    McST Знаток

    С нами с:
    01.06.2002
    Сообщения:
    609
    Симпатии:
    1
    Баллы:
    28
    нужен несложный парсер для XML'ок
    кто-нибудь знает где и как его найти для макса желательно с описанием?
     
  2. Chebu

    Chebu Знаток

    С нами с:
    23.10.2005
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    60
    именно на maxscript едва ли есть готовый, но можно прикрутить activex компонент
     
  3. Chebu

    Chebu Знаток

    С нами с:
    23.10.2005
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    60
    также можно использовать .NET - dotNetObject "System.Xml.XmlDocument"
     
  4. Chebu

    Chebu Знаток

    С нами с:
    23.10.2005
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    60
    пример:

    Код:
    xml_doc = dotNetObject "System.Xml.XmlDocument"
    xml_doc.load("c:/1.xml")
    
    --берём первый элемент:
    first_node = xml_doc.firstChild()
    
    --находим в его детях элемент с именем "my_element"
    elem = first_node.Item("my_element")
    
    --получаем значение аттрибута с именем "my_attribute"
    val = ((elem.attributes).ItemOf["my_attribute"]).value
    
    --берём следующий элемент того же уровня, что и elem:
    elem2 = elem.NextSibling()

    более подробно - в MSDN
     
  5. McST

    McST Знаток

    С нами с:
    01.06.2002
    Сообщения:
    609
    Симпатии:
    1
    Баллы:
    28
    ну я примерно так и пробовал сначала и вот сейчас тоже попробовал:

    на xml_doc.load("c:/1.xml") спотыкается (1.xml есть!) выдает undefined

    не понятно, то ли нужно как-то по-особенному писать xml

    даже на простом примере:
    <root>
    </root>
     
  6. Chebu

    Chebu Знаток

    С нами с:
    23.10.2005
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    60
    Он не спотыкается, undefined в данном случае означает, что открыл :)

    Простой пример:

    Код:
    fn GetAttribute root attr_path = 
    (
    	element = root
    	path_nodes = filterstring attr_path "/"
    	attr_name = path_nodes[path_nodes.count]
    	deleteItem path_nodes path_nodes.count
    	for p in path_nodes do
    	(
    		if(element != undefined) do element = element.Item(p)
    	)
    	if(element != undefined) do element.attributes.itemof[attr_name]
    )
    
    xmlDoc = dotNetObject "System.Xml.XmlDocument" 
    xmlDoc.Load("c:/1.xml")
    attr = GetAttribute xmlDoc "Root\MyElement\MyAttribute"
    print attr.value
    файл c:/1.xml:

    Код:
    <Root><MyElement MyAttribute="MyValue"></MyElement></Root>
     
  7. McST

    McST Знаток

    С нами с:
    01.06.2002
    Сообщения:
    609
    Симпатии:
    1
    Баллы:
    28
    Спасибо, кажется начал разбираться )
     
  8. Chebu

    Chebu Знаток

    С нами с:
    23.10.2005
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    60
    не за что...

    в примере ошибся:
    Код:
    attr = GetAttribute xmlDoc "Root[b]/[/b]MyElement[b]/[/b]MyAttribute"
     
Модераторы: Savin Denis

Поделиться этой страницей