Evox
Evox

Reputation: 112

Simple Xml parse with Xdocument

I want parse xml in windows store app with Xdocument.

I tried this,but returned with 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 contents:

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

How can is retrive text from attributes ?

Upvotes: 3

Views: 15138

Answers (2)

Damir Arh
Damir Arh

Reputation: 17865

As ZevSpitz already mentioned, your XML is invalid. I modified it a bit to be able to test my code:

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

You can retrieve values from the type attributes with the following code:

XDocument xDoc = XDocument.Parse(xml);

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

In my case xml is declared as follows:

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

You can still use your code to load the XML from a URL if the file contents are the same.

Upvotes: 3

Zev Spitz
Zev Spitz

Reputation: 15377

Try:

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

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

Upvotes: 0

Related Questions