如何获取与c#中的值关联的节点名称

时间:2015-11-02 17:21:34

标签: xml c#-4.0

<NodeA>
  <ChildNode>
     XYZ
  </ChildNode>
  <ChildNode1>
     ABC
  </ChildNode1>
</NodeA>

我有一个XML。 假设我得到的值为ABC我想检查它来自哪个节点,所以答案应该像“ChildNode1”。 我们可以得到这种类型的东西吗?

2 个答案:

答案 0 :(得分:0)

试试这个

            string xml =
                "<NodeA>" +
                  "<ChildNode>" +
                     "XYZ" +
                  "</ChildNode>" +
                  "<ChildNode1>" +
                     "ABC" +
                  "</ChildNode1>" +
                "</NodeA>";
            XElement nodeA = XElement.Parse(xml);
            List<string> abc = nodeA.Elements().Where(x => x.Value == "ABC").Select(x => x.Value).ToList();​

答案 1 :(得分:0)

您可以使用LINQ to XML。

因此,要获取具有特定值的节点名称,可以使用以下内容:

var nodeNames = xdoc.Root.Elements()
    .Where(n => n.Value == "ABC")
    .Select(n => n.Name.ToString())
    .ToList();

nodeNames.ForEach(n => Console.WriteLine(n));

这将打印&#34; ChildNode1&#34;

在您发布的XML中,有一些换行符和空格,所以如果您使用的是实际的XML,则可能需要检查没有这样的空格:

var nodeNames = xdoc.Root.Elements()
    .Where(n => n.Value.Replace("\n", "").Replace("\r", "").Replace(" ", "") == "ABC")
    .Select(n => n.Name.ToString())
    .ToList();