gpt4 book ai didi

xpath - msxml selectnodes:文本节点中的 namespace

转载 作者:行者123 更新时间:2023-12-03 16:47:50 37 4
gpt4 key购买 nike

我必须遵循以下XML文件:

<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>


我想从 elment节点中选择 Id=text:SOME_ID节点的所有具有元素 reference的子元素。我想通过使用msxml解析器中 selectNodes对象的 IXMLDOMNode方法在C ++中做到这一点。

在以下示例中,我在 pChild中选择了refence节点,并将 SelectionNamespaces属性设置为 xmlns:n="http://someurl/element"

MSXML2::IXMLDOMNodePtr pSelectedNodes =
pChild->selectNodes("../../n:element[n:Id=n:link/@ref]/n:*");
__ASSERT(pSelectedNodes->length > 0)


这是行不通的。我究竟做错了什么?

最佳答案

XPath查询的n:link/@ref部分是在应用条件条件的元素的上下文中进行评估的;在这种情况下,../../n:element
您不能在条件部分中引用整体上下文;换句话说,上下文节点在[方括号]的内部和外部是不同的。

恐怕您将不得不分别提取pChild->selectSingleNode("n:link/@ref")->text,然后“手动”将其插入XPath查询中。

关于xpath - msxml selectnodes:文本节点中的 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156460/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com