linq-xml查询未返回预期结果

时间:2014-03-24 12:48:08

标签: linq linq-to-xml linqpad

我有以下xml文件,其中包含html标记,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<html>
<head>
<title>
title1
</title>
</head>

<body>
<fragment id="heading1">
<h1>
Heading 1
</h1>
</fragment>
<fragment id="heading2">
<h2>
Heading 2
</h2>
</fragment>
<fragment id="paragraph1">
<p>
Paragraph 1
</p>
</fragment>
</body>                  
</html>

我正在尝试提取所有片段ID并使用linq-xml显示它们。查询如下所示:

XDocument xelement = XDocument.Load("Path\\To\\XMLFile"); 
var name = from nm in xelement.Descendants("body")
select nm.Element("fragment").Attribute("id").Value;
Console.WriteLine(name);

此查询返回的输出是:

  

标题1

但我想要的是:

  

标题1   heading2   PARAGRAPH1

我做错了什么? 请建议。

谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用

选择值
IEnumerable<string> names = from id in xelement.Descendants("fragment").Attributes("id") select id.Value;

IEnumerable<string> names = from frag in xelement.Descendants("fragment") select frag.Attribute("id").Value;

答案 1 :(得分:1)

我已经测试过并且工作正常!!

XDocument po = XDocument.Load(@"XMLFile1.xml");
      IEnumerable<string> names = from id in po.Descendants("fragment").Attributes("id") select id.Value;
            string str = string.Empty;
            foreach (var el in names)
            {
                str += el;               
            }
            System.Console.WriteLine(str);
            Console.ReadKey();