2016-11-16 129 views
-1

我有以下XML:如何檢查第一個XML節點是否存在?

<Root><Node1>node1 value</Node1><Node2>node2 value</Node2></Root> 

我想檢查是否Root是第一個節點。如果是這樣,我然後想要獲取子節點的值。

該XML位於XElement內部。我試過這個:

xml.Element("Root") 

但是返回null。如果Root存在,它不應該返回一個非null值嗎?

+0

什麼是'xml'?什麼樣的? –

+0

如何定義一個XML模式並驗證您的XML文檔? – Alex

回答

0
 string xml = @"<Root><Node1>node1 value</Node1><Node2>node2 value</Node2></Root>"; 

     XDocument doc = XDocument.Parse(xml); 

     var root = doc.Root; 
     if(root.Name == "Root") 
     { 
      foreach(var el in root.Descendants()) 
      { 
       string nodeValue = el.Value; 
      } 

     } 

您可以從Root.Name檢查根元素的名稱。之後,使用doc.Root.Descendants()循環所有元素。

+0

我的XML位於XElement中。你是說我需要把它放到XDocument中嗎? – 4thSpace

+0

@ 4thSpace我不知道你的確切情況。但如果這是整個XML文檔,你應該把它放在XDocument中。 – mybirthname

0

由於xmlXElement的一個實例,因此它已經引用了根元素,在本例中該元素名爲Root。如果<Root>元素有另一個孩子<Root>,則只有xml.Element("Root")纔會返回結果。

我想檢查一下Root是否是第一個節點。

你可以簡單地檢查根元素的Name

var raw = "<Root><Node1>node1 value</Node1><Node2>node2 value</Node2></Root>"; 
var xml = XElement.Parse(raw); 
if (xml.Name.ToString() == "Root") 
    Console.WriteLine("Success"); 
else 
    Console.WriteLine("Fail"); 
0

嘗試這種解決方案

XDocument doc = XDocument.Parse(@"<Root><Node1>node1value</Node1><Node2>node2value</Node2></Root>"); 
     if(doc!=null) 
     { 
      if (doc.Root.Name.LocalName == "Root") 
      { 
       foreach (var i in doc.Descendants()) 
        Console.WriteLine(i.Value); 
      } 
     } 
相關問題