简体   繁体   English

无法使用XDocument.Element获取xml节点

[英]Unable to fetch xml node using XDocument.Element

Here is a sample XML wherein I want to fetch xml node. 这是我要获取xml节点的XML示例。

XDocument doc = XDocument.Load("PurchaseOrder.xml");

<Rootelement>
    <element1 />
    <element2 />
    <element2 />
    <element3 />
</Rootelement>

I want to find out element2 from the xml 我想从xml中找出element2

Here is my code snippet. 这是我的代码段。

var xElement = XDoc.Element("Rootelement").Element("element2");

but I shows null. 但我显示为空。 I do not have any namespace in xml and I can't include one. 我在xml中没有任何名称空间,并且不能包含一个名称空间。

Please help. 请帮忙。

 XmlDocument xml = new XmlDocument();
    xml.LoadXml(myXmlString);

    XmlNodeList xnList = xml.SelectNodes("/Names/Name");
    foreach (XmlNode xn in xnList)
    {
      string firstName = xn["FirstName"].InnerText;
      string lastName = xn["LastName"].InnerText;
      Console.WriteLine("Name: {0} {1}", firstName, lastName);
    }

This code will return all the values of the tag <firstName> and <LastName> . 此代码将返回标记<firstName><LastName>所有值。 If you only want one value then you can remove the foreach loop and you are good to go. 如果只需要一个值,则可以删除foreach循环,您可以继续进行。

Here is the xml code 这是XML代码

<Names>
    <Name>
        <FirstName>John</FirstName>
        <LastName>Smith</LastName>
    </Name>
    <Name>
        <FirstName>James</FirstName>
        <LastName>White</LastName>
    </Name>
</Names>

Try like this; 这样尝试;

var xElement = doc.Root.Element("element2");

If you want to find elements anywhere in the document Use; 如果要在文档中的任何位置查找元素,请使用;

doc.Descendants("element2")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM