我想我快疯了。我正在使用Groovy处理xml文件,想写一个小助手类来帮助自己以类型化的方式通过名称获取节点。在这样做的同时,我创建了一个扩展NodeChild的类:
class XmlNode extends NodeChild {
XmlNode(NodeChild nodeChild) {
super(nodeChild[0] as Node, nodeChild.parent, nodeChild.namespacePrefix, nodeChild.namespaceTagHints)
}
// helpful methods
}
字符串
但是我不能示例化这个类而不得到这个错误:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '' with class 'groovy.xml.slurpersupport.NodeChildren' to class 'java.util.Map'
型
所以我得检查一下。很显然:
println(nodeChild.namespaceTagHints.getClass())
型
退货:
class groovy.xml.slurpersupport.NodeChildren
型
但是至少根据Apache Groovy GitHub项目,namespaceTagHints应该是Map<String, String>
类型。
有谁能解释一下这是怎么回事吗?还是我完全错过了什么?
1条答案
按热度按时间sr4lhrrt1#
正如@tim_yates提到的,
nodeChild.namespaceTagHints
通过nodeChild.getProperty("namespaceTagHints")
进行评估并且根据代码,它尝试获取具有对应名称GPathResult.java#L118的子XML节点
作为替代
nodeChild.namespaceTagHints
的解决方法,您可以使用:用途:字符串
nodeChild.parent
和nodeChild.namespacePrefix
相同