c# - 使用xpath从xml获取子节点值
问题描述
<Demo_Test>
<Step ID="1">
<ACTION>Point</ACTION>
<CLASS_ID>dfsfsdf</CLASS_ID>
</Step>
<Step ID="2">
<ACTION>Point</ACTION>
<CLASS_ID>Avkddd</CLASS_ID>
</Step>
<Step ID="3">
<ACTION>Point</ACTION>
<CLASS_ID>afsasfa</CLASS_ID>
</Step>
<Step ID="4">
<ACTION>SubAction</ACTION>
<CLASS_ID>afsasfa</CLASS_ID>
</Step>
</Demo_Test>
我想修改“Action”节点值为“Point”的“CLASS_ID”的值,因为我在下面写了代码但不起作用
string l_xPath = "//Step/ACTION["Point"]";
XmlNodeList l_nodeList = l_doc.SelectNodes(l_xPath);
解决方案
该解决方案使用 XPath 实现
XmlDocument d = new XmlDocument();
d.Load(@"C:\Users\Desktop\test.xml");
XPathNavigator nav = d.CreateNavigator();
XPathExpression exp;
exp = nav.Compile("//Step[ACTION='Point']");
XPathNodeIterator iterator = nav.Select(exp);
var a = d.SelectNodes("//Step[ACTION='Point']");
while (iterator.MoveNext())
{
Console.WriteLine(iterator.Current.SelectSingleNode("CLASS_ID").Value);
}
推荐阅读
- javascript - 如何从返回语句中检索谷歌驱动文件的绝对链接?
- c++ - 在 C++ 中使用 {} 声明变量时出错
- javascript - 如何在 POST 请求后正确呈现新元素?
- rust - 使用 rust 从网站上抓取由混淆的 JS 代码生成的数据
- java - 为什么 ResponseBody 和 Jackson ObjectMapper 不返回相同的输出?
- c# - 使用 C# 更新 SQL 表
- kernel - 内核是否跟踪进程在内存中的启动位置或 CPU?
- amazon-web-services - 非法指令(核心转储)docker、red hat 7.7、aws ec2
- html - Flexbox 不工作 - 它似乎只适用于某些子元素?
- python - 如何从锚标签中抓取数据,该标签位于 selenium python 中的另一个锚标签内