使用linq获取特定的xml行

时间:2014-09-19 11:45:13

标签: c# xml linq

我的XML看起来像这样:

<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
     <Alert>warning</Alert>
</row>
</data>

我不想得到所有的行。在这种情况下,我想要的值是“警报”。

这就像我得到的那样......

using (XmlReader reader = cmd.ExecuteXmlReader())
            {
                string xmlFile = "";
                while (reader.Read())
                {
                    xmlFile = reader.ReadOuterXml();
                }
                var xmlElement = XElement.Parse(xmlFile);
                var result = xmlElement.Elements("data").Where(x => x.Value.Equals("row")).ToList();
            }

我知道我的linq有问题,但我对linq很新,并希望得到一些帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

XNamespace ns = "http://www.w3.org/2001/XMLSchema-instance";
var xDocument = XDocument.Load("path");
var result = xDocument.Descendants(ns + "row").ToList();

答案 1 :(得分:0)

我希望这会奏效。请试试这个。

var xDocument = XDocument.Load(@"XmlFilePath"); 
//Use below if you have xml in string format
// var xDocument = XDocument.Parse("XmlString"); 
XNamespace ns = xDocument.Root.GetDefaultNamespace();
var result = xDocument.Descendants(ns + "row").ToList();