如何检查第一个XML节点是否存在?

时间:2016-11-16 23:25:37

标签: c# .net xml xelement

我有以下XML:

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

我想检查Root是否是第一个节点。如果是这样,那么我想获取子节点的值。

此XML位于XElement中。我试过这个:

xml.Element("Root")

但返回null。如果Root存在,它不应该返回非空值吗?

3 个答案:

答案 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)

由于xmlXElement的实例,因此它已经引用了根元素,在本例中它名为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);
            }
        }