2011-08-16 78 views
3

我有一個包含多個子樹的XML文件,這些子樹也可以包含子樹。像這樣:讀取xml子樹和後代C#

<File> 
<A>...</A> 
<B>...</B> 
<C> 
.. 
<D>..</D> 
</C> 
</File> 

(「..」是子樹中的元素)。我如何讀取每個子樹,然後重新獲得它的所有元素(如果這個子樹包含一個子樹,我想單獨讀取它並查看它的所有元素)?

回答

2

XmlReader支持讀取用於該目的的子樹;您可以使用子樹,讀者作爲輸入到其他車型(XmlDocumentXElement等),如果你願意的話:

using(var reader = XmlReader.Create(source)) 
{ 
    reader.MoveToContent(); 
    reader.ReadStartElement(); // <File> 
    while(reader.NodeType != XmlNodeType.EndElement) 
    { 
     Console.WriteLine("subtree:"); 
     using(var subtree = reader.ReadSubtree()) 
     { 
      while(subtree.Read()) 
       Console.WriteLine(subtree.NodeType + ": " + subtree.Name); 
     } 
     reader.Read(); 
    } 
    reader.ReadEndElement(); // </File> 
} 
1

您可以使用XDocument來讀取.NET中的XML文檔。例如讀取D節點的值:

var doc = XDocument.Load("test.xml"); 
var value = doc.Root.Element("C").Element("D").Value; 
0

我用下面的代碼

var doc = XDocument.Load("C:\\Test.xml"); 
var DBID = doc.Root.Element("database").FirstAttribute.Name; 
var DBIDValue = doc.Root.Element("database").FirstAttribute.Value; 
解決方案