我有一個包含多個子樹的XML文件,這些子樹也可以包含子樹。像這樣:讀取xml子樹和後代C#
<File>
<A>...</A>
<B>...</B>
<C>
..
<D>..</D>
</C>
</File>
(「..」是子樹中的元素)。我如何讀取每個子樹,然後重新獲得它的所有元素(如果這個子樹包含一個子樹,我想單獨讀取它並查看它的所有元素)?
我有一個包含多個子樹的XML文件,這些子樹也可以包含子樹。像這樣:讀取xml子樹和後代C#
<File>
<A>...</A>
<B>...</B>
<C>
..
<D>..</D>
</C>
</File>
(「..」是子樹中的元素)。我如何讀取每個子樹,然後重新獲得它的所有元素(如果這個子樹包含一個子樹,我想單獨讀取它並查看它的所有元素)?
XmlReader
支持讀取用於該目的的子樹;您可以使用子樹,讀者作爲輸入到其他車型(XmlDocument
,XElement
等),如果你願意的話:
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>
}
您可以使用XDocument來讀取.NET中的XML文檔。例如讀取D
節點的值:
var doc = XDocument.Load("test.xml");
var value = doc.Root.Element("C").Element("D").Value;
我用下面的代碼
var doc = XDocument.Load("C:\\Test.xml");
var DBID = doc.Root.Element("database").FirstAttribute.Name;
var DBIDValue = doc.Root.Element("database").FirstAttribute.Value;
解決方案