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




