2015-11-02 77 views
0
<NodeA> 
    <ChildNode> 
    XYZ 
    </ChildNode> 
    <ChildNode1> 
    ABC 
    </ChildNode1> 
</NodeA> 

我有一個XML。 假設我把值作爲ABC,我想檢查它來自哪個節點,所以答案應該像「ChildNode1」。 我們可以得到這種類型的東西嗎?如何獲取與c#中的值關聯的節點名稱

+0

當然。如果我是你,我會使用LINQ to XML。我建議你自己嘗試一下(請記住,在LINQ查詢中使用「where」),然後發佈你嘗試過的以及如果你仍然陷入困境的情況。 –

回答

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();​ 
0

您可以使用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(); 
相關問題