C#解析XML文件

问题描述:

我在堆栈溢出中查看了一些线程,找不到答案。我有一个XML文件设置如下所示:C#解析XML文件

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

,我需要选择全部“项”标签,并返回ID,类型,条目的内部名称和描述标签。我如何用C#做到这一点?

感谢,

+0

这看起来确实像XML ......因此,我会使用XDocument和XML的LINQ扩展。如果您需要增加的功能,您也可以使用XPath(在某些情况下以牺牲复杂性为代价)。请参阅http://*.com/questions/566167/query-an-xdocument-for-elements-by-name-at-any-depth –

+0

http://msdn.microsoft.com/en-us/library/system .xml.linq.xdocument.descendants.aspx(Linq to XMl with Descendants是一个很好的起点)。 –

请记住,您的xml文件应该有单根节点。下面是使用LINQ到解析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") 
       }; 

查询将返回对应于每个条目元素的匿名对象的序列(包含属性编号,类型,名称和说明)。

+0

@ user1425433 [XML文档必须具有根元素](http://www.w3schools.com/xml/xml_syntax.asp)在您的问题中,根级别有两个* entry *元素 –

HtmlAgilityPack库。使用它你可以使用LINQ或XPath解析HTML。