C# 基于字段属性的linq-to-xml数据访问

C# 基于字段属性的linq-to-xml数据访问,c#,xml,linq,C#,Xml,Linq,我有这样一些xml: <Data> <Rows> <Row> <Field Name="title">Mr</Field> <Field Name="surname">Doe</Field> <Row> <Rows> <Data> 先生 雌鹿 使用linq如何获取属性为姓

我有这样一些xml:

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

先生
雌鹿
使用linq如何获取属性为姓氏的field元素中包含的值


谢谢

实际上,您正在尝试在这里执行XML到Linq的操作。LINQtoXML更像是通过Linq从对象创建XML结构

因为您有一个XML文件,所以可以使用如下内容:

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

在另一种情况下,要从XML中获取数据,请改用XPath。

实际上,您正在尝试执行XML到Linq的操作。LINQtoXML更像是通过Linq从对象创建XML结构

因为您有一个XML文件,所以可以使用如下内容:

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

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

以下是如何使用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();
XDocument doc=XDocument.Parse(“MrDoe”);
字符串[]匹配=(来自文档子体(“字段”)中的e)
其中(字符串)e.Attribute(“Name”)=“姓氏”
选择(字符串)e.ToArray();

以下是使用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();
XDocument doc=XDocument.Parse(“MrDoe”);
字符串[]匹配=(来自文档子体(“字段”)中的e)
其中(字符串)e.Attribute(“Name”)=“姓氏”
选择(字符串)e.ToArray();

我认为LINQ to XML非常适合作为XPath的替代品,提供强类型支持和更直观的查询语法。LINQ to XML在XML之上添加了另一层。基本上,它所做的是将查询转换为XPath构造。查看中的XQuery示例,您可以看到如何用LINQ而不是XPath编写复杂查询。对于那些没有XPath经验的人来说,LINQ更直观。没错。我相信LINQtoXML非常适合作为XPath的替代品,提供强类型支持和更直观的查询语法。LINQtoXML在XML之上添加了另一层。基本上,它所做的是将查询转换为XPath构造。查看中的XQuery示例,您可以看到如何用LINQ而不是XPath编写复杂查询。对于那些没有XPath经验的人来说,LINQ更直观。没错。