You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C# XmlDocument中SelectSingleNode获取目标COMMENTAIRES节点的XPath语法

解决XML SelectSingleNode获取指定COMMENTAIRES节点的问题

嘿,我懂你的困扰了!你当前用descendant::COMMENTAIRES的时候,XPath会遍历整个文档的所有后代节点,然后返回第一个匹配到COMMENTAIRES,也就是嵌套在PROPRIETAIRE下面的那个,这就是为什么你拿到了不想看到的评论内容。

要获取根节点<BIEN>直接下属的<COMMENTAIRES>节点(也就是包含<FR>子节点的那个),你可以用这几种XPath写法:

方法1:直接定位根节点的子节点

因为目标<COMMENTAIRES><BIEN>的直接子节点,而root已经指向了<BIEN>,所以直接写节点名称即可:

XmlNode nodeCommentaires = root.SelectSingleNode("COMMENTAIRES");
// 然后获取FR节点的文本内容
string desiredText = nodeCommentaires.SelectSingleNode("FR").InnerText;

方法2:直接获取FR节点的文本

如果想一步到位拿到想要的文本,可以直接定位到<FR>子节点:

XmlNode frNode = root.SelectSingleNode("COMMENTAIRES/FR");
string desiredText = frNode.InnerText;

方法3:更明确的全路径写法(可选)

如果担心文档结构有变化,也可以用完整的XPath路径(不过因为root已经是<BIEN>,其实没必要,但可以作为参考):

XmlNode nodeCommentaires = root.SelectSingleNode("/BIEN/COMMENTAIRES");

这样修改后,就能精准拿到你想要的内容:This is the comment I want to see啦!

内容的提问来源于stack exchange,提问作者user12119413

火山引擎 最新活动