Lesen Sie ein gefälschtes XML-Dokument (XML-Fragment) in einem XmlTextReader-Objekt

[Fall] Ich habe eine Reihe von XML-Dateien mit Metadaten über eine große Anzahl von Dokumenten in ihnen erhalten. Zumindest habe ich darum gebeten. Was ich dort bekommen habe, wo 'xml files' ohne root-Element so aufgebaut sind (ich habe ein paar Elemente weggelassen):

<folder name = "abc"></folder>
<folder name = "abc/def">
<document name = "ghi1">
</document>
<document name = "ghi2">
</document>
</folder>

[Problem] Wenn ich versuche, die Datei in einem XmlTextReader-Objekt zu lesen, kann ich nicht erkennen, dass kein Stammelement vorhanden ist.

[Aktuelle Problemumgehung] Natürlich kann ich die Datei als Stream lesen, <xmlroot> und </ xmlroot> anhängen und den Stream in eine neue Datei schreiben und diese in XmlTextReader lesen. Das ist genau das, was ich jetzt mache, aber ich bevorzuge es, die ursprünglichen Daten nicht zu manipulieren.

[Angeforderte Lösung] Ich verstehe, dass ich dafür XmlTextReader mit der Option DocumentFragment verwenden sollte. Dies gibt jedoch den Compiletime-Fehler:

In System.Xml.dll ist eine nicht behandelte Ausnahme vom Typ "System.Xml.XmlException" aufgetreten

Zusätzliche Informationen: XmlNodeType DocumentFragment wird für die teilweise Inhaltsanalyse nicht unterstützt. Zeile 1, Position 1.

[Fehlerhafter Code]

using System.Diagnostics;
using System.Xml;

namespace XmlExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string file = @"C:\test.txt";
            XmlTextReader tr = new XmlTextReader(file, XmlNodeType.DocumentFragment, null);
            while(tr.Read())
                Debug.WriteLine("NodeType: {0} NodeName: {1}", tr.NodeType, tr.Name);
        }
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage