8

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,

2
  • That sure looks like XML...as such, I would use XDocument and the LINQ extensions for XML. You could also use XPath if you needed the added power (at the expense of complexity, in some cases). See stackoverflow.com/questions/566167/… Commented Jan 9, 2013 at 0:32
  • msdn.microsoft.com/en-us/library/… (Linq to XMl with Descendants is a good staring point). Commented Jan 9, 2013 at 0:34

2 Answers 2

13

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).

Sign up to request clarification or add additional context in comments.

1 Comment

@user1425433 XML Documents Must Have a Root Element in your question there is two entry elements on root level
1

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.