如何获取XML属性的值?

时间:2011-09-08 12:07:25

标签: c# xml linq-to-xml

我有一个XML文件:

<SourceMessage xmlns="test.test">
  <updated>2011</updated>
  <title type="p1"/>
  <title type="p2"/>
  <title type="p3"/>
  <entry>
  </entry>
</SourceMessage> 

我如何使用LINQ获取&lt; type&gt; &lt; title&gt;的属性元素,即“p1”,“p2”和“p3”?

3 个答案:

答案 0 :(得分:1)

使用XDocument.LoadXDocument.Parse将XML数据加载到XDocument。然后,使用LINQ,您可以获得每个&lt; title&gt;的类型。文档根目录下的元素如下:

XNamespace test = "test.test";

XDocument doc = XDocument.Load(file);
// - or -
XDocument doc = XDocument.Parse("<SourceMessage ...");

IEnumerable<string> query = from title in doc.Root.Elements(test + "title")
                            select (string)title.Attribute("type");

foreach (string item in query)
{
    Console.WriteLine(item);
}

输出:

p1
p2
p3

答案 1 :(得分:0)

var xElement XElement.Parse(xmlString);
var result = xElement.Descendants("title")
                     .Select(e => e.Attribute("type").Value);

答案 2 :(得分:0)

XDocument xml = XDocument.Parse (@"<SourceMessage xmlns="test.test">
<updated>2011</updated>
  <title type="p1"/>
  <title type="p2"/>
  <title type="p3"/>
  <entry>
  </entry>
</SourceMessage>");

foreach (var t in xml.Root.Descendants("title"))
    Console.Write(t.Attribute("type").Value);