【问题标题】:XPath Expression with functions带有函数的 XPath 表达式
【发布时间】:2015-03-10 21:47:23
【问题描述】:

我正在尝试构建一个 XPath 表达式来获取至少 5 年前出版的所有专辑价格。 XML 文档的结构如下:

<catalogue>
    <album>
        <year>1990</year>
        <price>7.99</price>
        ...
    </album>
</catalogue>

我尝试了以下方法,但显然它有问题:

string xPathExpression = "album[year<year-from-date(current-date())-5]/price";

这也不起作用:

string xPathExpression = "album[year<year-from-date("2010-07-07")]/price";

这可能是一些与命名空间相关的问题。我找到了以下示例,我不确定如何在实践中实施:

year-from-date(xs:date("2005-04-23"))

我正在使用 C#,更具体地说是 XmlDocument(SelectNodes())

【问题讨论】:

    标签: c# xml xpath xmldocument


    【解决方案1】:

    year-from-date()current-date() 是 XPath 2.0 函数。 .NET 的内置 XML 库,包括 XmlDocument,仅支持 XPath 1.0。

    如果是year-from-date(),你可以直接使用substring()

    album[year < substring("2010-07-07", 1, 4)]/price
    

    如果你需要一个返回当前日期的函数,你可以创建一个custom function resolver。设置起来有点麻烦,但它允许您定义几乎可以做任何事情的 XPath 函数。

    【讨论】:

    • 好吧,这很不幸。感谢您的快速响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多