Xpath 计数和比较日期时间
Posted
技术标签:
【中文标题】Xpath 计数和比较日期时间【英文标题】:Xpath count and compare datetime 【发布时间】:2011-12-28 19:45:10 【问题描述】:下面是我的xml...
我想要做的是使用 XPATH 和计数表达式。我想要计算 xml 中的日期何时与今天的日期匹配。因此,例如今天的日期是“2011-05-05”.. 任何与此日期匹配的消息都有一个计数并返回一个整数。所以答案是 NumberofTodaysMessages = 2。
<Response>
<run_id>1</run_id>
<message>
<timestamp>2011-05-05T10:50:00.46875+00:00</timestamp>
<event_type>Information</event_type>
<operation>LoadProjects</operation>
<error_code />
<details>LoadProjects request detected</details>
</message>
<message>
<timestamp>2011-05-05T10:50:02.296875+00:00</timestamp>
<event_type>Error</event_type>
<operation>Processor.InitaliseDCFiles</operation>
<error_code />
<details>some error details</details>
</message>
<message>
<timestamp>2011-11-10T10:50:02.296875+00:00</timestamp>
<event_type>Debug</event_type>
<operation>Processor.InitaliseDCFiles</operation>
<error_code />
<details>some details</details>
</message>
<Response>
我将如何在 XPATH 中解决这个问题??
count(/Response/message/Timestamp[@DateTime.Now()])
【问题讨论】:
【参考方案1】:xpath 可以是:
today = "2011-11-05" // 用您的日期库替换字符串中的“today”
xpath = "响应/消息/时间戳[starts-with(text()='"+today+"')]"
【讨论】:
不能做..... xpath = "Response/message/timestamp[starts-with(text()='"+DATETIME.NOW()+"')]" ??因为我想每天都运行这个.. 使用字符串 'today' 构建你的 xpath 语法,所以你会以这样的方式结束:“Response/message/timestamp[starts-with(text()='2011-11-05')] " so.... 今天 = DATETIME.NOW().ToString() xpath = "Response/message/timestamp[starts-with(text()='"+today+"')]" 【参考方案2】:C# 实现了 XPath 2.0,对吗?那么你应该拥有所有这些functions 可用。
【讨论】:
至少 4.0 的 .Net 框架中没有 XPath 2.0 实现。如果您需要,请查看***.com/questions/1525299/xpath-and-xslt-2-0-for-net。 好吧,也许我被这句话误导了:“System.Xml.XPath 命名空间包含定义用于导航和编辑 XML 信息项的游标模型的类,作为 XQuery 1.0 和 XPath 2.0 的实例数据模型。”的 MSDN 库。 Framework 4.5 支持 XPath 2.0 - docs.microsoft.com/en-us/dotnet/api/…以上是关于Xpath 计数和比较日期时间的主要内容,如果未能解决你的问题,请参考以下文章