如何从XML读取值?

时间:2011-08-27 03:41:36

标签: c# xml

数据:

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

这是我用来读取数据的代码:

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

问题:Console.WriteLine("node = " + node);除了node:之外没有给我任何输出,但是上面的示例中没有像2930这样的实际值。

由于

2 个答案:

答案 0 :(得分:4)

使用node.value即。,XmlElement.value

答案 1 :(得分:2)

作为使用XmlDocument的替代方法,您还可以使用LINQ to XML(这是我的首选):

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);

使用XmlDocument没有什么问题,特别是对于你正在做的事情,但是当你有机会时你可能想要查看LINQ to XML,因为我发现它比XmlDocument更容易使用。

如果您想获取所有“value”元素,只需从查询中删除SingleOrDefault(),然后您就可以遍历结果,如下所示:

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

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

这是一个值得一试的网站: LINQ to XML - 5 Minute Overview