gpt4 book ai didi

c# - XPath last() 无法正常工作

转载 作者:行者123 更新时间:2023-11-30 14:58:36 26 4
gpt4 key购买 nike

我有以下 xml

 <root>
<data>
<person>tewst</person>
<data>
<phone>djk</phone>
<email>dsd</email>
</data>
</data>
</root>

使用 c# SelectSingleNode 我试图到达second“数据”节点并在电子邮件标记后插入新元素调用“phone2”。问题是我无法到达正确的“数据”节点。这是我用来到达那里的代码,但它不起作用。任何帮助,将不胜感激。谢谢

XMLDocument doc = new XMLDocument("xml file here");
var node = doc.SelectSingleNode("//data[last()]");

XMLElement phone1 = doc.CreateElement("phone2");
phone1.InnerText = "12";
node.AppendChild(phone1);

问题是节点为空。

解决方法:

XMLDocument doc = new XMLDocument("xml file here");
var node = doc.SelectSingleNode("(//data)[last()]");

最佳答案

//data[last()] 选择 data 节点,它们是其父节点的最后一个 data 子节点,因此它在您的节点中选择 2 个节点示例:

1) root 节点的最后一个 data 子节点

<data>
<person>tewst</person>
<data>
<phone>djk</phone>
<email>dsd</email>
</data>
</data>

2) 和第一个 data 节点的最后一个 data 子节点

<data>
<phone>djk</phone>
<email>dsd</email>
</data>

要选择整个文档中的最后一个数据,请使用:

(//data)[last()]
  • //data 将为所有后代 data 元素生成节点集,无论嵌套与否,
  • [last()] 将选择节点集的最后一个节点
  • 用方括号()//data 括起来,确保它被解释为//data 然后是[last() ],而不是 // 然后是 data[last()]

关于c# - XPath last() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543045/

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