Render.ru
Поддержать

нужен XML Parser

М Т (McST)

Знаток
Рейтинг
23
нужен несложный парсер для XML'ок
кто-нибудь знает где и как его найти для макса желательно с описанием?

Chebu

Знаток
Рейтинг
59
именно на maxscript едва ли есть готовый, но можно прикрутить activex компонент

Chebu

Знаток
Рейтинг
59
также можно использовать .NET - dotNetObject "System.Xml.XmlDocument"

Chebu

Знаток
Рейтинг
59
пример:

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

М Т (McST)

Знаток
Рейтинг
23
ну я примерно так и пробовал сначала и вот сейчас тоже попробовал:

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

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

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

Chebu

Знаток
Рейтинг
59
Он не спотыкается, 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>

Chebu

Знаток
Рейтинг
59
не за что...

в примере ошибся:
attr = GetAttribute xmlDoc "Root[b]/[/b]MyElement[b]/[/b]MyAttribute"