XMLPATH的令牌无效
本文关键字:无效 令牌 XMLPATH | 更新日期: 2023-09-27 18:12:32
我想提取所有Date元素具有今天的DateTime的节点,除了seconds,它比DateTime .now少10秒。
代码如下:
c# DateTime total_seconds = Convert.ToDateTime(DateTime.Now.AddSeconds(-10));
string st = "_127.0.0.1";
//string v = "1";
XPathNodeIterator itr = nav.Select("pings/ping" + st + "[DATE<" + total_seconds + "]/DATE");
XML <pings>
<ping_127.0.0.1>
<IP>127.0.0.1</IP>
<RTT>0</RTT>
<DATE>13-09-2015 16:47:09</DATE>
</ping_127.0.0.1>
<ping_127.0.0.1>
<IP>127.0.0.1</IP>
<RTT>1</RTT>
<DATE>13-09-2015 16:47:10</DATE>
</ping_127.0.0.1>
<ping_127.0.0.1>
<IP>127.0.0.1</IP>
<RTT>2</RTT>
<DATE>13-09-2015 16:47:11</DATE>
</ping_127.0.0.1>
<ping_127.0.0.1>
<IP>127.0.0.1</IP>
<RTT>1</RTT>
<DATE>13-09-2015 16:47:12</DATE>
</ping_127.0.0.1>
</pings>
XPathNodeIterator itr = nav.Select("pings/ping" + st + "[DATE<" + total_seconds + "]/DATE");
当你还没有粘贴错误,从标题它说:"无效的令牌"。代码建议使用字符串作为XPath语句
pings/ping_127.0.0.1[DATE<37712828]/DATE
但是由于total_seconds
变量的类型是DateTime
,我假设它是一个类似"2015-10-09…13:22:56.584"的字符串。这很可能是您的令牌无效的原因。
如果没有,可以在代码中放置一个断点并粘贴生成的XPath吗?
注意:您想要实现的是(完全)不可能实现的,在XPath 1.0中不能将日期/时间值与大于操作符进行比较。至少需要XPath 2.0才能做到这一点。不幸的是,一个解决方法并不是微不足道的。