读取xml子树和后代C#

时间:2011-08-16 06:41:42

标签: c# .net xml readxml

我有一个包含多个子树的XML文件,这些子树也可以包含子树。像这样的东西:

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

(“..”是子树中的元素)。我如何阅读每个子树然后重新加载其所有元素(如果这个子树包含一个子树我想单独阅读它的所有元素)?

3 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用XDocument来读取.NET中的XML文档。例如,要读取D节点的值:

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

答案 2 :(得分:0)

我使用以下代码获得了解决方案

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