Чтение поддеревьев xml и потомков C # - PullRequest
3 голосов
/ 16 августа 2011

У меня есть XML-файл, который содержит несколько поддеревьев, и эти поддеревья также могут содержать в себе поддеревья.примерно так:

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

(«..» - это элементы в поддереве).Как я могу прочитать каждое поддерево и затем прочитать все его элементы (если это поддерево связывается с поддеревом, я хочу прочитать его отдельно и все его элементы)?

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

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>
}
1 голос
/ 16 августа 2011

Вы можете использовать XDocument для чтения XML-документов в .NET.Например, чтобы прочитать значение узла D:

var doc = XDocument.Load("test.xml");
var value = doc.Root.Element("C").Element("D").Value;
0 голосов
/ 06 декабря 2013

Я получил решение со следующим кодом

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