2个日期之间的XPath表达式 - c#

我已将xml作为字符串加载到DataTable中。

这是我当前用于遍历DataTable中的行的代码:

foreach (DataTable table in ds.Tables)
        {
            foreach (DataRow row in table.Rows)
            {
                XmlDocument auction_31_xml = new XmlDocument();
                if(!string.IsNullOrEmpty(row[auctions_31].ToString()))
                {
                    auction_31_xml.LoadXml(row[auctions_31].ToString());
                    var x = auction_31_xml.SelectNodes("//AUCTION[AUCTION_DATE>20070111 and AUCTION_DATE<2013930]");
                    auction_count_31 += x.Count;
                }
             }
         }

这是XML的结构:

<AUCTIONS>
<AUCTION AUCTION_ID="235342">
    <AUCTION_DATE>2007-06-29</AUCTION_DATE>
    <AUCTION_TIME>12:00P</AUCTION_TIME>
    <RENTAL_AUCTION_STATUS>1</RENTAL_AUCTION_STATUS>
    <UNIT_CONTENTS/>
    <SOLD_AMOUNT/>
    <TAX_COLLECTED/>
    <BUYER_TAX_EXEMPT/>
    <BUYER_TAX_EXEMPT_NUM/>
    <SOLD_TO>Unavailable</SOLD_TO>
    <NOTES/>
</AUCTION>
<AUCTION AUCTION_ID="228371">
    <AUCTION_DATE>2006-11-30</AUCTION_DATE>
    <AUCTION_TIME>04:30PM</AUCTION_TIME>
    <RENTAL_AUCTION_STATUS>1</RENTAL_AUCTION_STATUS>
    <UNIT_CONTENTS/>
    <SOLD_AMOUNT/>
    <TAX_COLLECTED/>
    <BUYER_TAX_EXEMPT/>
    <BUYER_TAX_EXEMPT_NUM/>
    <SOLD_TO>Unavailable</SOLD_TO>
    <NOTES/>
</AUCTION>

我想做的是获取2007年1月11日至2013年9月30日之间所有具有AUCTION_DATE的AUCTION元素的计数。

我拥有的XPATH表达式是:

var x = auction_31_xml.SelectNodes("//AUCTION[AUCTION_DATE>20070111 and AUCTION_DATE<2013930]");

任何帮助将不胜感激。

参考方案

您需要使用number(translate(the_date,'-',''))将XML中的日期转换为与比较的数字具有相同格式的数字:

//AUCTION
    [
        number(translate(AUCTION_DATE,'-',''))>20070111 
            and 
        number(translate(AUCTION_DATE,'-',''))<20130930
    ]

给定此问题中的输入XML,XPath上方(仅出于可读性考虑而对其进行格式化)能够返回XPath测试器中的第一个<AUCTION>节点。

将谓词<T>转换为Func <T,bool> - c#

我有一个包含成员Predicate的类,希望在Linq表达式中使用该类:using System.Linq; class MyClass { public bool DoAllHaveSomeProperty() { return m_instrumentList.All(m_filterExpression); } private IEnumerable&…

合并List <T>和List <Optional <T >> - java

鉴于: List<Integer> integers = new ArrayList<>(Arrays.asList( 10, 12 )); List<Optional<Integer>> optionalIntegers = Arrays.asList( Optional.of(5), Optional.em…

无法从ArrayList <String>转换为List <Comparable> - java

当我写下面的代码时,编译器说 无法从ArrayList<String>转换为List<Comparable>private List<Comparable> get(){ return new ArrayList<String>(); } 但是当我用通配符编写返回类型时,代码会编译。private List&l…

客户端反序列化为数组序列化字典<string,string>数据 - c#

我有一个字典,该字典使用C#中的JavaScriptSerializer进行了序列化。在客户端,我有:"{"dd049eda-e289-4ca2-8841-4908f94d5b65":"2","ab969ac2-320e-42e1-b759-038eb7f57178":"5�…

OpenShift构建错误:无法在多模块Maven Spring启动项目的父模块中导入子模块类 - java

我有一个使用spring的多模块Maven项目。通用模块类用作业务模块项目中的直接导入。我可以在本地PC上编译并成功运行它们。当我在OpenShift中部署相同的模块时,出现错误,无法在业务模块中导入通用模块类。项目结构可以总结如下:项目根 通用模块 src pom.xml 业务模块 src pom.xml pom.xml父POM:<?xml vers…