【问题标题】:linq to xml access data based on field attributelinq to xml 基于字段属性访问数据
【发布时间】:2009-07-08 11:23:51
【问题描述】:

我有一些这样的xml:

  <Data>
      <Rows>
        <Row>
          <Field Name="title">Mr</Field>
          <Field Name="surname">Doe</Field>
        <Row>
      <Rows>
 <Data>

使用linq如何获取属性为姓氏的字段元素中包含的值

谢谢

【问题讨论】:

    标签: c# xml linq


    【解决方案1】:

    以下是使用 LINQ to XML 表达查询的方法:

    XDocument doc = XDocument.Parse("<Data><Rows><Row><Field Name=\"title\">Mr</Field><Field Name=\"surname\">Doe</Field></Row></Rows></Data>");
    string[] matches = (from e in doc.Descendants("Field")
                        where (string)e.Attribute("Name") == "surname"
                        select (string)e).ToArray();
    

    【讨论】:

      【解决方案2】:

      实际上,您正在尝试在此处执行 XML-to-Linq 的操作。 Linq to XML 更多是为了通过 Linq 从对象创建 XML 结构。

      既然你有一个 XML 文件,你可以使用这样的东西:

              XmlDocument xml = new XmlDocument();
              xml.LoadXml(Content);
              string Surname = xml.SelectSingleNode("//Field/[@Name='surname']").Value.ToString();
      

      在其他用途​​中,要从 XML 中获取数据,请改用 XPath。

      【讨论】:

      • 我相信 LINQ to XML 非常适合作为 XPath 的替代品,提供强类型支持和更直观的查询语法。
      • LINQ to XML 在 XML 之上添加了另一层。基本上,它所做的就是将您的查询转换为 XPath 结构。查看来自msdn.microsoft.com/en-us/bb330936.aspx 的 XQuery 示例,您可以了解如何在 LINQ 中而不是 XPath 中编写复杂的查询。对于没有使用 XPath 经验的人来说,LINQ 更加直观。没错。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多