2011-05-11 4 views
2

나는이 노드를MSXML2 : 노드의 가치를 얻으려면 어떻게해야합니까?

MSXML2::IXMLDOMNodePtr node;  

node->Getxml() 반환 "<level3>333<level4 atribute="444"><level5>555<level6>666</level6></level5></level4></level3>"

node->Gettext(); 반환

node->GetnodeValue() 노드가 속성이 아닌 경우 예외를 throw "333555666" 있습니다.

어떻게 333 값을 얻을 수 있습니까 ???

답변

4

당신은 손에 가지고있는 노드의 아이들을 걸어야합니다 - 물론 checking the node has children 다음에 childNodes을 사용하여 목록을 얻을 수 있습니다. 그런 다음 Gettext()을 사용하여 개별 요소 텍스트를 추출 할 수 있습니다.

내 경험상 MSXML DOM을 코딩하는 것은 상당히 고통 스럽습니다. 어쨌든 내장 된 스마트 포인터를 사용하고있어 주셔서 감사합니다.

+0

노드에는 2 개의 하위 노드가 있습니다. 첫 번째 gettext 반환합니다 (333) 두 번째 반환 333555666 반환합니다. GetfirstChild 및 Gettext 사용할 경우 내 코드를 잘 작동하지만이 메서드는 아무 문제없이 작동합니까? – cprogrammer

+1

노드가 특성 노드가 아닌 경우 GetnodeValue가 작동하지 않고 예외를 throw하는 이유는 무엇입니까? – cprogrammer

+1

XML DOM은 직관적이지 않습니다. 귀하의 예제에서 level3은 부모 노드이고 333과 level4는 그 자식 노드입니다. 333은 텍스트 노드이고 level4는 요소 노드입니다. – Luke

관련 문제