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>

XMLPATH的令牌无效

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才能做到这一点。不幸的是,一个解决方法并不是微不足道的。