如何使用Linq到Xml从XML中选择特定元素?

时间:2015-03-24 09:20:49

标签: c# linq

如何使用LINQ从以下XML中选择字段:

<MESSAGE MSGID="123" NAME="MyMessage">
  <FIELDS>
    <FIELD NAME="F1" FTYPE="STRING">123</FIELD>
    <FIELD NAME="F2"> FTYPE="INT">0</FIELD>
  </FIELDS>
</MESSAGE>

代码:

XDocument xmldoc = null;

try
{
    xmldoc = XDocument.Parse(bstrXml);

    //Returns NULL
    //var result = xmldoc.Descendants("Fields");
    //Returns NULL
    //var result = xmldoc.Elements("Fields");
}

2 个答案:

答案 0 :(得分:1)

可以使用

找到具有属性字段的元素
var childElements = xDoc.Elements();
var fieldAttributes = childElements.Elements().Select(p => p.Attribute("Fields"));

答案 1 :(得分:0)

此解决方案将搜索xml字段元素并按名称选择字段

        var fieldName = "F1";
        var xDoc = XDocument.Load("XMLFile1.xml");
        var field = xDoc.Descendants("FIELD")
            .Where(f => string.Compare(f.Attribute("NAME").Value, fieldName, StringComparison.CurrentCulture) == 0);

更改where表达式以优化搜索。