2013-01-09 134 views
8

我在堆棧溢出中查看了一些線程,找不到答案。我有一個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://stackoverflow.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是一個很好的起點)。 –

回答

13

請記住,您的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 *元素 –