使用linq访问xml中的所有节点

时间:2012-12-10 06:37:29

标签: c# .net linq xml-parsing

我有xml:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<UpdateMemberHireStatus xmlns="http://tempuri.org/">
  <member>
    <HireAvailability>
      <code>1</code>
      <name>פנוי</name>
    </HireAvailability>
    <HireRejectReason>
      <code>2</code>
      <name>wow</name>
    </HireRejectReason>
    <IdNumber>43504349</IdNumber>
    <note> </note>
  </member>
</UpdateMemberHireStatus>

我希望使用LINQ来访问xml中的所有节点。

以下是我的尝试:

XNamespace ns = "tempuri.org/";
IEnumerable<HireStatus> status = from r in doc.Descendants(ns + "UpdateMemberHireStatus")
                                              .Descendants(ns + "member") 
                                 select new HireStatus() { }; 
return status.ToList();

3 个答案:

答案 0 :(得分:0)

使用Descendants

var xml = XDocument.Load(XMLStream);
var allEle = xml.Descendants("UpdateMemberHireStatus"); //you can do linq now. 

答案 1 :(得分:0)

您也可以通过以下方式使用XDocument:

        string xmlPath = "D://member.xml";
        XmlDocument doc = new XmlDocument();
        xdoc = XDocument.Load(xmlPath);
        doc.LoadXml(xdoc.ToString());
        var memberStatus= (from mem in xdoc.Descendants("member")
                               select mem);

        foreach (XElement element in memberStatuses.ToList())            
            IEnumerable<XNode> nodes = element.Nodes();

答案 2 :(得分:-1)

var x = XElement.Load(XMLStream);

var all = x.DescendantNodes();