我想使用XPath 2.0或3.0表达式解析XML。 我想将最新版本用于XPath,因此我下载了撒克逊罐子。 这是我的代码:

问题描述 投票:0回答:2
xml:

<?xml version="1.0" encoding="UTF-8"?> <collection> <mods xmlns="http://www.loc.gov/mods/v3" xmlns:etd="http://www.ntltd.org/standards/metadata/etdms/1.0/etdms.xsd" xmlns:local="http://idea.library.drexel.edu" xmlns:mods="http://www.loc.gov/mods/v3" xmlns:datacite="https://schema.datacite.org/meta/kernel-4.0/metadata.xsd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink"> <identifier type="assetId">16</identifier> <identifier type="doi">10.17918/D8VD4T</identifier> </mods> </collection>
我的选择器是空的,为什么我在我运行相同的表达式和XML文件的情况下没有任何结果,并且在

https://www.freeformatter.com/xpath-tester.htester.html

它提供了结果?

XdmNode.getExternalNode()仅当XDM节点是外部节点(例如DOM节点)的包装器/视图时,才会返回结果。使用SaxonDocumentBuilder

构建的节点是本机XDM节点,而不是外部DOM节点的视图。如果要与撒克逊人一起使用dom,只需在外部构建DOM节点,然后使用
java xml xpath saxon
2个回答
3
投票
包装。但是请注意,处理DOM节点时的撒克逊人比使用其本机XDM树模型时要慢5至10倍。

在Mike在答案中写的内容,如果您有
XdmNode
node
并想要其字符串内容,则可以使用

node.getStringValue()

0
投票

该方法的文档

getTextContent()
https://www.saxonica.com/html/documentation10/javadoc/net/net/saxon/saxon/s9api/xdmitem.htmitem.html#getStringvalue--
    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.