微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决具有多个名称空间的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 举报,一经查实,本站将立刻删除。