XmlDocument中的字符串更大,更少和相等的比较

时间:2010-12-16 23:51:22

标签: c# .net xpath xmldocument

我正在尝试在XmlDocument中进行字符串比较,以下是我尝试过的。我想知道为什么前2个产生正确的结果,最后2个没有返回任何结果。

我想要做的是根据日期时间字符串过滤掉节点。就像我上一个例子一样。

感谢,

XmlNodeList test = x2PathDoc.SelectNodes("//config
                                            /pendingversion
                                              [@versionconfigid > 1002002]");

XmlNodeList test2 = x2PathDoc.SelectNodes("//config
                                             /pendingversion
                                               [@versionconfigid >'1002002']");

XmlNodeList test3 = x2PathDoc.SelectNodes("//config
                                             /pendingversion[@test > 'b']");

XmlNodeList test4 = x2PathDoc.SelectNodes("//config
                                             /pendingversion
                                               [@deploydatetime > 
                                                '2010-12-19T03:25:00-08:00']");

1 个答案:

答案 0 :(得分:5)

在XPath 1.0中,除了相等比较之外的比较运算符,仅适用于数字。这是因为在XML中你正在处理UNICODE。因此,为了使字符串成为完整的有序数据类型,您需要在XPath 2.0中添加它的归类概念。

第一个表达方式是正确的。为什么第二个有效?因为“大于”运算符使用number()函数转换了两个参数。

来自http://www.w3.org/TR/xpath/#booleans

  

首先,涉及的比较   节点集是根据   比较不涉及   节点集;这是统一定义的   for =,!=,< =,<,> =和>。

在描述节点集的存在性比较之后(只有在节点集中存在节点且比较为真时才进行比较):

  

当没有要比较的对象时   节点集,运算符为<=<,   >=>,然后通过将两个对象转换为数字来比较对象   并根据比较数字   IEEE 754