2017-04-07 6 views
0

Ich versuche, einen bestimmten Abschnitt aus einer XML-Datei in C# zu lesen. Ich habe versucht, diesen Code hier zu verwenden, aber ich bekomme einen Compilerfehler unter Text in XmlNodeType.Text, aber die seltsame Sache ist es kommt mit Intellisense und gibt den gleichen Fehler mit allem anderen wie Element, Comment usw .. Was fehlt mir?der Typ Name Text existiert nicht im Typ xmlnodetype

XmlTextReader reader = new XmlTextReader(xmlDoc); 
List<string> paths = new List<string>(); 
while (reader.Read()) 
{ 
    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Paths") 
     foreach(XmlNodeType.Text aa in reader.ReadInnerXml()) 
      paths.Add(aa); 
} 
reader.Close(); 

XML-Datei

<Config> 
    <Paths> 
     <Input>C:\</Input> 
     <Output>C:\</Output> 
     <Log>\Logs</Log> 
    </Paths> 

    <SystemOwnerRoles> 
     <Supplier>SUPPLIER</Supplier> 
     <Mop>MOP</Mop> 
    </SystemOwnerRoles> 
</Config> 

Antwort

1

XmlNodeType ist eine Enumeration. XmlNodeType.Text ist ein Wert, kein Typ, aber Sie versuchen, es als den Typ der Variablen aa zu verwenden. Außerdem gibt ReaderInnerXml() eine string zurück, daher ist nicht klar, wie Sie darüber iterieren werden.

Haben Sie habenXmlTextReader dafür verwenden? Fast alle XML-Arbeiten sind mit LINQ to XML einfacher. Zum Beispiel, das alles ist, ich glaube, Sie brauchen:

var paths = XDocument.Load(xmlDoc) 
        .Descendants("Paths") 
        .Elements() 
        .Select(element => (string) element) 
        .ToList(); 
+0

no i dont 'seine XMLTextReader' nur zu verwenden, was kam ich über die ersten nie verwendet XML vor und nicht so toll an den' LINQ' aber schlecht dieser eine geben probiere – WhatsThePoint

+0

@WhatsThePoint: Es ist * viel * einfacher, LINQ zu XML als 'XmlReader' zu verwenden - und wenn du mit LINQ im Allgemeinen unbehaglich bist, empfehle ich dir dringend, dich zu verbessern, da es * unglaublich * nützlich ist. –

+0

Ich habe eine Ausnahme, wenn dies ausgeführt wird, sagte es Daten auf Root-Ebene ist ungültig in Zeile 1 Position 1 bin ich schreibe meine Xml falsch? – WhatsThePoint

Verwandte Themen