gpt4 book ai didi

c# - 使用 XPath 按 Id 选择 XMLNode

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:44 24 4
gpt4 key购买 nike

我有下面的 XML 片段,请注意 Reference 节点包含一个链接到 Body 节点的 Id 属性的 URI。

 <Reference URI="#Body">
<SOAP-ENV:Body Id="Body" xmlns:SOAP-ENV="http://www.dingo.org">
<ns0:Add xmlns:ns0="http://www.moo.com">
<ns0:a>2</ns0:a>
<ns0:b>3</ns0:b>
</ns0:Add>
</SOAP-ENV:Body>

如果我有 URI 属性的值,我将如何获得整个 Body XMLNode?我认为这最好通过 XPath 表达来完成,但对 XPath 没有任何线索。请注意,XML 并不总是那么简单。我正在用 c# 顺便说一句 :)

有什么想法吗?

谢谢

乔恩

编辑:我事先不知道 XML 结构或 namespace ,我所知道的只是引用元素具有我要检索的 xmlNode 的 ID,希望这更清楚一些。

最佳答案

您可以将适用于相对(或绝对)节点的条件添加到 XPath 表达式的任何步骤。

在这种情况下:

//*[@id=substring-after(/Reference/@URI, '#')]

//* 匹配文档中的所有元素。 [] 中的部分是一个条件。在条件内,采用根 References 节点的 URI 元素部分,但忽略“#”(以及它之前的任何内容)。

示例代码,假设您已将 XML 加载到 XPathDocument doc:

var nav = doc.CreateNavigator();
var found = nav.SelectSingleNode("//*[@id=substring-after(/Reference/@URI, '#')]");

关于c# - 使用 XPath 按 Id 选择 XMLNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496850/

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