使用Xdocument进行简单的Xml解析

时间:2012-11-18 23:55:35

标签: c# xml-parsing linq-to-xml

我想在带有Xdocument的Windows应用商店中解析xml。

我试过这个,但是返回null:

XDocument xDoc;
string title= "";

xDoc = XDocument.Load(url);

var elements = from x in xDoc.Descendants()
               select new
               {
                   title = x.Descendants("title").First().Value,
               };

foreach (var el in elements)
    _title = title;

Xml内容:

<title type='text'>tiitle</title>
<content type='text'> gfgdgdggd</content>
<link rel='related' type='application/atom+xml' href='http....'/>

如何从属性中检索文本?

2 个答案:

答案 0 :(得分:3)

正如ZevSpitz已经提到的,您的XML无效。我修改了一下以便能够测试我的代码:

<root>
    <title type="text">title</title>
    <content type="text">gfgdgdggd</content>
</root>

您可以使用以下代码从type属性中检索值:

XDocument xDoc = XDocument.Parse(xml);

var types =
    from x in xDoc.Root.Descendants()
    select x.Attribute("type").Value;

在我的情况下,xml声明如下:

private string xml =
    @"<root>
        <title type=""text"">title</title>
        <content type=""text"">gfgdgdggd</content>
    </root>";

如果文件内容相同,您仍然可以使用您的代码从URL加载XML。

答案 1 :(得分:0)

尝试:

var types =
    from e in xDoc.Descendants()
    select (string)e.Attribute("type");

foreach (string type in types) {
    Console.WriteLine(type);
}