【发布时间】:2017-04-28 08:45:30
【问题描述】:
我必须使用我正在使用 DOMParser 的 Java 代码来验证 Xpath 表达式。我面临的问题是,对于默认命名空间,我需要先调整 xpath,然后才能通过代码对其进行评估。例如如果我想使用以下 xpath -
//party[@id='party1:abc']/abc:person[@id='Trader']/trade/abc:personId[@personIdScheme='urn:xyz:person-id:PEOPLESOFT']/text()
我需要将其传递给代码 -
//:party[@id='party1:abc']/abc:person[@id='Trader']/:trade/abc:personId[@personIdScheme='urn:xyz:person-id:PEOPLESOFT']/text()
所以基本上要求是在默认命名空间适用的所有相关节点之前放置一个:。
有人可以帮助使用可以有效进行此转换的正则表达式吗?
【问题讨论】:
-
我不确定这是否是最好的方法,我认为应该有一种方法可以设置默认命名空间之类的。
-
@Aaron 在代码中我们使用了 setNamespaceContext 并在命名空间缓存中添加了 DEAFULT_NS。但即便如此,Xpath 也需要进行调整。希望这是有道理的。
-
你不想:在 abc 之前?
-
@kushal。引号中的任何内容都不应转换
-
替代方法:为什么不使用在静态上下文中设置默认命名空间(用于元素和类型)的 XPath 2.0 解析器?