我有以下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
我做错了什么? 请建议。
谢谢
答案 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();