首页 > 解决方案 > 使用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);

标签: c#.netxml

解决方案


该解决方案使用 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);
            }

推荐阅读