具有多个名称空间的Velocity XmlTool 3.0

问题描述

我正在尝试将一些旧代码从VeLocity 1.7 / VeLocityTools 2.0更新到2.2 / 3.0版本。在测试过程中,我正在处理具有多个命名空间的XML文件(对于书籍,对作者说b: <b:book xmlns:b="http://www.test.com/book" xmlns:a="http://www.test.com/author" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> )。 xml是从JAXB类生成的。 过去我可以这样称呼它:

$book=$xmlTool.parse($xmlText).get("b:book") 
$authorName=$book.find("./b:author/a:name")

使用新版本似乎无效。 get(...)的返回值始终为null。似乎XPath缺少解析文件中的NamespaceContext。如果我在查找中修改XPath表达式以搜索例如本地名称,或者如果我“注入”(通过替换VeLocityTools中的某些代码)它的命名空间。它也可以与VeLocityTools 2.0中的旧Dom4j / jaxen组合一起使用。

修改XPath表达式将非常困难(许多具有不同名称空间和用例的模板)。因此,我可以继续使用VeLocityTools 2.0,但由于某些旧库可能无法与该软件的将来版本一起使用。

有什么办法告诉XmlTool从根节点注入命名空间?有一个错误条目:https://issues.apache.org/jira/browse/VELTOOLS-160 不需要关闭它,但是我不知道它应该如何工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)