<row transactionDateTime="2012-06-04 02:42:44" transactionID="2519826732" quantity="5000" typeName="Caldari Navy Mjolnir Rocket" typeID="27321" price="988.72" clientID="92026367" clientName="N Clover" stationID="60003760" stationName="Jita IV - Moon 4 - Caldari Navy Assembly Plant" transactionType="buy" transactionFor="personal" journalTransactionID="5956192510"/>
Hello,
上面是我尝试从中提取数据的 XML 文件的示例。我要提取的数据是;
transactionDateTime="2012-06-04"
现在 - 我通过以下 Xpath 查询得到这个没有任何问题;
substring-before(//row[@transactionfor='personal']/attribute::transactiondatetime, ' ')
这正是我想要的 - “2012-06-04”,但它只给我一个元素!如果我删除之前的子字符串,它将获取所有元素,但包括时间。
任何帮助都会很棒!
substring-before(//row[@transactionfor='personal']/attribute::transactiondatetime, ' ')
在 XPath 1.0 中,如果将节点集作为参数传递,而需要单个值(字符串),则节点集中的第一个节点将用作参数。规则是应用函数string() http://www.w3.org/TR/xpath/#function-string到传递的节点集并根据定义string($nodeset)
是相同的string($node-set[1])
.
在 XPath 2.0 中,上述表达式应该会导致错误。
当节点数大于 1 时,不可能使用单个 XPath 表达式生成应用于所有选定节点的函数结果.
因此,必须在第二步中处理每个选定的节点(可能在托管 XPath 的编程语言中指定的循环中)。
在 XPath 2.0 中,可以使用函数调用作为表达式的最后一个定位步骤.
因此可以产生一个序列all想要带有此 XPath 2.0 表达式的字符串:
//row[@transactionfor='personal']
/attribute::transactiondatetime
/substring-before(., ' ')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)