linq to xml基于字段属性访问数据

时间:2009-07-08 11:23:52

标签: c# xml linq

我有一些像这样的xml:

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

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

感谢

2 个答案:

答案 0 :(得分:2)

以下是使用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();

答案 1 :(得分:1)

实际上,你正试图在这里做一个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。