我有以下XML:
<Root><Node1>node1 value</Node1><Node2>node2 value</Node2></Root>
我想检查Root
是否是第一个节点。如果是这样,那么我想获取子节点的值。
此XML位于XElement中。我试过这个:
xml.Element("Root")
但返回null。如果Root存在,它不应该返回非空值吗?
答案 0 :(得分: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()
循环根中的所有元素。
答案 1 :(得分:0)
由于xml
是XElement
的实例,因此它已经引用了根元素,在本例中它名为Root
。仅当xml.Element("Root")
元素具有另一个子<Root>
时,执行<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");
答案 2 :(得分: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);
}
}