【问题标题】:Access all nodes in xml using linq使用 linq 访问 xml 中的所有节点
【发布时间】:2012-12-10 06:37:28
【问题描述】:

我有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();

【问题讨论】:

  • 我有一个代表 xml 的类,我想使用 linq 来插入值。即将到来的我真的不知道从哪里开始以及如何开始。我以前使用过 linq,但在更简单的情况下。公共 HireStatus() { HireAvail = new HireAvailability(); HireRejectReason = new HireRejectReason(); } 公共 HireAvailability HireAvail { 获取;放; } public HireRejectReason HireRejectReason { get;放; } 公共 int ID { 获取;放; } 公共字符串注释 { 获取;放; }
  • 可能的重复 --> 使用 linq to xml 遍历 xml 树中的每个元素 --> link
  • 试过了,这不是我需要的,我需要在类的属性中插入值。

标签: c# .net linq xml-parsing


【解决方案1】:

使用Descendants

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

【讨论】:

  • XNamespace ns = "tempuri.org"; IEnumerable status = from r in doc.Descendants(ns + "UpdateMemberHireStatus").Descendants(ns + "member") select new HireStatus() { };返回状态.ToList();这就是我到目前为止所做的
  • @Danny 那么有什么问题呢?
【解决方案2】:

您也可以通过以下方式使用 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();

【讨论】:

    【解决方案3】:

    var x = XElement.Load(XMLStream);

    var all = x.DescendantNodes();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      相关资源
      最近更新 更多