选择特定的xml节点

时间:2013-02-23 18:17:06

标签: xml xpath

我有一个具体的问题:

看着

<observation realtime_start="2013-02-23" realtime_end="2013-02-23" date="1975-01-01" value="4917.2"/>
<observation realtime_start="2013-02-23" realtime_end="2013-02-23" date="1976-01-01" value="5186.8"/>

所以我试图获取特定日期的值属性,但

string xmlNode = root.SelectSingleNode("/observations/observation/@value").Value;

使用它获得第一个值(4917.2)。我如何指定我想要“1976-01-01”和5186的价值?

谢谢。

1 个答案:

答案 0 :(得分:1)

这样做:

string xmlNode = root.SelectSingleNode("/observations/observation[@date='1976-01-01']/@value").Value;

这就是选择日期为1976-01-01的观察节点的@value。要得到@value的整数,你可能需要使用你正在做的任何语言(我敢打赌它有一个向下舍入功能)。正如@JLRis所观察和解释的那样,您的root似乎是一个.NET XmlNode或XPathNavigator,它只能选择节点,因此下面的代码不起作用并会引发异常。我把它留下来表明有四舍五入的xpath函数。

string xmlNode = root.SelectSingleNode("floor(/observations/observation[@date='1976-01-01']/@value)").Value;

如果使用xpath函数路径(它似乎无法使用),并且如果要始终舍入到最接近的整数,则将floor更改为round。如果你想要总是四舍五入,那就改变一下。