2011-05-11 1 views
2

У меня есть данный узелMSXML2: Как я могу получить значение узла?

MSXML2::IXMLDOMNodePtr node;  

node->Getxml() возвращается "<level3>333<level4 atribute="444"><level5>555<level6>666</level6></level5></level4></level3>"

node->Gettext(); возвращает "333555666"

node->GetnodeValue() бросает исключение, если узел не является атрибутом.

Как я могу получить значение 333 ???

ответ

4

Вы должны пройти детей узла, который у вас есть, - вы можете получить список, используя childNodes после checking the node has children, конечно, вы можете использовать Gettext() для извлечения отдельных текстовых элементов.

Весьма болезненно для кода MSXML DOM, по моему опыту. Рад видеть, что вы используете встроенные интеллектуальные указатели.

+0

Узел имеет 2 ребенка. Для первого Gettext возвращает whet, я хочу (333) для второго возврата 333555666. Мой код отлично работает, если я использую GetfirstChild и Gettext, но будет ли этот метод работать без проблем в любом случае? – cprogrammer

+1

Почему GetnodeValue не работает и генерирует исключение, если узел не является узлом атрибута? – cprogrammer

+1

XML DOM не совсем интуитивно понятен. В вашем примере level3 является родительским узлом, а 333 и level4 - его дочерними узлами. 333 является текстовым узлом, а level4 - узлом элемента. – Luke