2
我有下面的XML文件:MSXML的selectNodes:命名空間中的文本節點
<root xmlns="http://someurl/element" xmlns:text="http://someurl/text">
<elements>
<element>
<Id>text:SOME_ID</Id>
<!-- some other elements -->
</element>
<element>
<!-- some other elements -->
<reference>
<link ref="text:SOME_ID" />
</refernce>
</element>
</elements>
</root>
我要選擇具有不同於reference
節點的元素Id=text:SOME_ID
的elment
節點的所有子元素。我想通過使用msxml解析器中的IXMLDOMNode
對象的selectNodes
方法在C++中執行此操作。
在下面〔實施例我在pChild
選擇refence節點和propetey設置爲xmlns:n="http://someurl/element"
:
MSXML2::IXMLDOMNodePtr pSelectedNodes =
pChild->selectNodes("../../n:element[n:Id=n:link/@ref]/n:*");
__ASSERT(pSelectedNodes->length > 0)
這是行不通的。我究竟做錯了什麼?
@ user141478:問題是您需要在內部上下文過濾器中使用外部上下文。這在XPath 1.0中不可行。在XPath 2.0中,你可以這樣做:'爲$ current。返回/ */*/n:元素[n:Id eq $ current/@ ref]' – 2011-03-01 16:42:28