数据:
<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这样的实际值。
由于
答案 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