java - 从 xml 中获取数据使用 Xquery with starts with 函数

标签 java xml xquery

我想使用带有 starts with 函数的 Xquery 从 xml 中获取数据。

数据.xml

              <data><employee id=\"1\"><name value=\"vA-12\">A</name> <title id=\"2\">Manager</title></employee>
                    <employee id=\"2\"><name value=\"vC-12\">C</name><title id=\"2\">Manager</title></employee>
                    <employee id=\"2\"><name value=\"vB-12\">B</name><title id=\"2\">Manager</title></employee>
             </data>

现在我想获取 employee@id=title@id 且 name@value 以 'vC' 开头的名称。

我已经为此编写了这个 xquery。请看下面但出现错误-

for $x in /data/employee where $x/@id=$x/title/@id and [fn:starts-with($x/name/@value,vC)] return data($x/name)

这是错误-

    Error on line 1 column 55 
  XPST0003 XQuery syntax error near #.../title/@id and [fn:starts-with#:
    Unexpected token "[" in path expression
net.sf.saxon.s9api.SaxonApiException: Unexpected token "[" in path expression
    at net.sf.saxon.s9api.XQueryCompiler.compile(XQueryCompiler.java:544)
    at Xml.process(Xml.java:46)
    at Xml.main(Xml.java:30)
Caused by: net.sf.saxon.trans.XPathException: Unexpected token "[" in path expression
    at net.sf.saxon.query.XQueryParser.grumble(XQueryParser.java:479)
    at net.sf.saxon.expr.parser.XPathParser.grumble(XPathParser.java:221)

最佳答案

starts-with() 函数需要两个参数。我对 Saxon 并不特别熟悉,但一般来说,您可以通过 xquery 这样做:

for $x in /data/employee[@id=title/@id and name[starts-with(@value,'vC')]] 
return data($x/name)

或在 for 子句中使用 where 子句而不是谓词,如您尝试的查询:

for $x in /data/employee
where $x/@id=$x/title/@id and $x/name/starts-with(@value,'vC')
return data($x/name)

关于java - 从 xml 中获取数据使用 Xquery with starts with 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30423055/

相关文章:

java - 用于打印的手动分页符在 Apache POI excel 中不起作用

java - 使用 AbstractSolrTestCase 进行 SolR 4.0 测试

java - 如何用多行文本覆盖图像(文本将位于 Canvas 的中心)

swift - drmohundro/SWXMLHash 和 Swift 中的转义值

xquery - "empty greatest"和 "empty least"在Order By中的作用是什么

xquery - 为什么这个 XQuery 过滤器会返回不需要的元素?

java - 尝试使用来自 Java (JNA) 的 DLL。无法加载库异常

java - 关于双值的 Spark SQL 求和函数问题

html - 相当于Go中Python的HTML解析函数/模块?

xml - 如何配置 BaseX 以在 VS Code 中使用