我有以下XML:如何檢查第一個XML節點是否存在?
<Root><Node1>node1 value</Node1><Node2>node2 value</Node2></Root>
我想檢查是否Root
是第一個節點。如果是這樣,我然後想要獲取子節點的值。
該XML位於XElement內部。我試過這個:
xml.Element("Root")
但是返回null。如果Root存在,它不應該返回一個非null值嗎?
我有以下XML:如何檢查第一個XML節點是否存在?
<Root><Node1>node1 value</Node1><Node2>node2 value</Node2></Root>
我想檢查是否Root
是第一個節點。如果是這樣,我然後想要獲取子節點的值。
該XML位於XElement內部。我試過這個:
xml.Element("Root")
但是返回null。如果Root存在,它不應該返回一個非null值嗎?
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()
循環所有元素。
我的XML位於XElement中。你是說我需要把它放到XDocument中嗎? – 4thSpace
@ 4thSpace我不知道你的確切情況。但如果這是整個XML文檔,你應該把它放在XDocument中。 – mybirthname
由於xml
是XElement
的一個實例,因此它已經引用了根元素,在本例中該元素名爲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");
嘗試這種解決方案
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);
}
}
什麼是'xml'?什麼樣的? –
如何定義一個XML模式並驗證您的XML文檔? – Alex