如何从XML读取值?
问题描述:
数据:如何从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一样。
感谢
答
作为替代使用XmlDocument的,你也可以使用LINQ到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更容易处理。
如果你想获得所有的“价值”的元素,只需删除从查询中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
答
使用node.value即XmlElement.value
你简直太棒了!谢谢,我终于可以继续我的Arduino项目。 – Csharpz
不客气。 – Tim
嘿,我首先展示的数据只有其中的一个元素,它们是它们的倍数,我编辑了第一篇文章以显示我的意思。 – Csharpz