<NodeA>
<ChildNode>
XYZ
</ChildNode>
<ChildNode1>
ABC
</ChildNode1>
</NodeA>
我有一个XML。 假设我得到的值为ABC我想检查它来自哪个节点,所以答案应该像“ChildNode1”。 我们可以得到这种类型的东西吗?
答案 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();