0
<NodeA>
<ChildNode>
XYZ
</ChildNode>
<ChildNode1>
ABC
</ChildNode1>
</NodeA>
我有一個XML。 假設我把值作爲ABC,我想檢查它來自哪個節點,所以答案應該像「ChildNode1」。 我們可以得到這種類型的東西嗎?如何獲取與c#中的值關聯的節點名稱
<NodeA>
<ChildNode>
XYZ
</ChildNode>
<ChildNode1>
ABC
</ChildNode1>
</NodeA>
我有一個XML。 假設我把值作爲ABC,我想檢查它來自哪個節點,所以答案應該像「ChildNode1」。 我們可以得到這種類型的東西嗎?如何獲取與c#中的值關聯的節點名稱
試試這個
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();
您可以使用LINQ到XML這一點。
因此,爲了與一個特定的值獲得節點名稱,你可以使用這樣的事情:
var nodeNames = xdoc.Root.Elements()
.Where(n => n.Value == "ABC")
.Select(n => n.Name.ToString())
.ToList();
nodeNames.ForEach(n => Console.WriteLine(n));
這將打印「ChildNode1」
在XML你貼有一些換行和空格所以如果這是你正在使用的實際XML,你可能需要檢查沒有這樣的空格:
var nodeNames = xdoc.Root.Elements()
.Where(n => n.Value.Replace("\n", "").Replace("\r", "").Replace(" ", "") == "ABC")
.Select(n => n.Name.ToString())
.ToList();
當然。如果我是你,我會使用LINQ to XML。我建議你自己嘗試一下(請記住,在LINQ查詢中使用「where」),然後發佈你嘗試過的以及如果你仍然陷入困境的情況。 –