Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 具有多个名称空间的Velocity XmlTool 3.0_Xpath_Velocity_Velocity Tools - Fatal编程技术网

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

Xpath 具有多个名称空间的Velocity XmlTool 3.0,xpath,velocity,velocity-tools,Xpath,Velocity,Velocity Tools,我正在尝试将一些旧代码从Velocity 1.7/VelocityTools 2.0更新到2.2/3.0版本。在测试期间,我正在处理一个具有多个名称空间的XML文件(假设b代表book,a代表author: )。xml是从JAXB类生成的。 过去,我可以这样说: $book=$xmlTool.parse($xmlText).get("b:book") $authorName=$book.find("./b:author/a:name") 新版本似乎不

我正在尝试将一些旧代码从Velocity 1.7/VelocityTools 2.0更新到2.2/3.0版本。在测试期间,我正在处理一个具有多个名称空间的XML文件(假设b代表book,a代表author:
)。xml是从JAXB类生成的。 过去,我可以这样说:

$book=$xmlTool.parse($xmlText).get("b:book") 
$authorName=$book.find("./b:author/a:name")
新版本似乎不起作用。get(…)的返回值始终为null。XPath似乎缺少解析文件中的名称空间上下文。如果我在find中修改XPath表达式以搜索本地名称,或者如果我“注入”(通过替换VelocityTools中的一些代码)名称空间,它就会工作。它也适用于VelocityTools 2.0中的旧Dom4j/jaxen组合

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

有没有办法告诉XmlTool从根节点注入名称空间?有一个bug条目:
由于不需要,它被关闭了,但我不知道它应该如何工作。

我不确定它是否链接到#160。在我看来像个虫子。是否要打开一个问题?已将带有补丁建议的邮件发送到'dev@velocity.apache.org'... 我应该把它也记录在别的地方吗?你的邮件没有通过。我不确定该列表是否接受附件。好的,它现在与Jira一样,附带了补丁文件