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