MysteryDev
MysteryDev

Reputation: 638

C# Parsing XML File

I looked through a few thread here on stack overflow and I cannot find the answer. I have an xml file setup like the following:

<entry id="1" type="a">
    <name>string 1</name>
    <description>any description</description>
</entry>
<entry id="2" type="b">
    <name>string 2</name>
    <description>any description #2</description>
</entry>

I need to select all "entry" tags and return the ID, the Type, the inner name and description tags of the entry. How can I do so with C#?

Thanks,

Upvotes: 8

Views: 9059

Answers (2)

Sergey Berezovskiy
Sergey Berezovskiy

Reputation: 236228

Keep in mind, that your xml file should have single root node. Here is parsing with Linq to Xml:

var xdoc = XDocument.Load(path_to_xml);
var entries = from e in xdoc.Descendants("entry")
              select new {
                 Id = (int)e.Attribute("id"),
                 Type = (string)e.Attribute("type"),
                 Name = (string)e.Element("name"),
                 Description = (string)e.Element("description")
              };

Query will return sequence of anonymous objects corresponding to each entry element (with properties Id, Type, Name, and Description).

Upvotes: 13

Kirill Polishchuk
Kirill Polishchuk

Reputation: 56162

Look at HtmlAgilityPack library. Using it you can parse HTML using LINQ or XPath.

Upvotes: 1

Related Questions