2011-05-11 76 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

你必须步行手中的节点的孩子 - 当然你可以在checking the node has children之后使用childNodes获得一个列表,然后你可以使用Gettext()来提取单个元素文本。

根据我的经验,编码MSXML DOM非常痛苦。很高兴看到你正在使用内置的智能指针,无论如何。

+0

节点有2个孩子。对于第一个Gettext返回我想要的(333)第二个返回333555666.我的代码工作正常,如果我使用GetfirstChild和Gettext,但是这种方法在任何情况下都可以正常工作吗? – cprogrammer 2011-05-11 21:05:43

+1

为什么GetnodeValue不起作用,并在节点不是属性节点时抛出异常? – cprogrammer 2011-05-11 21:06:27

+1

XML DOM不太直观。在你的例子中,level3是父节点,333和level4是它的子节点。 333是文本节点,而level4是元素节点。 – Luke 2011-05-11 21:44:33