Simple Xml parse with Xdocument

14,144

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.

Share:
14,144

Related videos on Youtube

Evox
Author by

Evox

Updated on June 04, 2022

Comments

  • Evox
    Evox almost 2 years

    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 ?

  • Zev Spitz
    Zev Spitz over 11 years
    Does it return null for all the elements? or only for one of them?
  • Zev Spitz
    Zev Spitz over 11 years
    Good call on using Root. I prefer not to use .Value, and instead cast to a string, because if there is no type attribute on the element the Attribute method will return null and calling the Value property will cause a NullReferenceException. If casting to string, the returned value will simply be null, which the string type can hold.
  • Damir Arh
    Damir Arh over 11 years
    @ZevSpitz I guess it depends on the expected XML structure, but I like your approach. I'm sure it'll come in handy. I usually used != null checking in such cases.
  • Zev Spitz
    Zev Spitz over 11 years