2 Stimmen

Wie liest man Werte aus XML?

Die Daten:

<sys>
  <id>SCPUCLK</id>
  <label>CPU Clock</label>
  <value>2930</value>
</sys>
<sys>
  <id>CPUTEMP</id>
  <label>CPU Temp</label>
  <value>39</value>
</sys>

Dies ist der Code, den ich zum Lesen der Daten verwende:

XmlDocument document = new XmlDocument();
document.LoadXml(data);
XmlElement node = document.SelectSingleNode("/sys/value") as XmlElement;
Console.WriteLine("node = " + node);

Das Problem: Console.WriteLine("node = " + node); gibt mir keine andere Ausgabe als node: aber keinen tatsächlichen Wert wie 2930 aus dem obigen Beispiel.

Danke

4voto

Schu Punkte 1094

Node.value verwenden, d.h., XmlElement.value

2voto

Tim Punkte 27854

Als Alternative zur Verwendung von XmlDocument können Sie auch LINQ to XML verwenden (was ich bevorzuge):

using System.Xml.Linq;

XDocument xDoc = new XDocument();
// Parse loads the XDocument with XML from a string
xDoc = XDocument.Parse(data);

string node = (from x in xDoc.Root.Elements("value")
               select x.Value).SingleOrDefault();

Console.WriteLine("node = " + node);

Nichts falsch mit der Verwendung von XmlDocument, vor allem für das, was Sie tun, aber Sie möchten vielleicht LINQ to XML überprüfen, wenn Sie eine Chance bekommen, wie ich finde es viel einfacher, mit als XmlDocument arbeiten.

Wenn Sie alle "Wert"-Elemente erhalten möchten, entfernen Sie einfach die SingleOrDefault() aus der Abfrage, und dann können Sie das Ergebnis in einer Schleife durchlaufen, etwa so:

var nodes = from x in xDoc.Root.Elements("value")
           select x.Value;

foreach (var node in nodes)
{
    Console.WriteLine("node = " + node);
}

Hier ist eine Website, die Sie sich ansehen sollten: LINQ to XML - 5 Minuten Überblick

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X