【发布时间】:2022-11-10 18:31:35
【问题描述】:
在调用 saxon 库处理 xquery 表达式之前,我们添加了将 DOM 转换为 Domino 的代码,这涉及构建一个 xml 文档作为输出。 对于使用某些 DOM 构建器创建的 DOM,可以看到以下异常:
java.lang.NullPointerException
at net.sf.saxon.om.NameOfNode.equals(NameOfNode.java:177)
at net.sf.saxon.om.SingletonAttributeMap.put(SingletonAttributeMap.java:69)
at net.sf.saxon.om.NodeInfo.attributes(NodeInfo.java:528)
at net.sf.saxon.tree.util.Navigator.copy(Navigator.java:673)
at net.sf.saxon.om.NodeInfo.copy(NodeInfo.java:568)
at net.sf.saxon.tree.util.Navigator.copy(Navigator.java:679)
at net.sf.saxon.om.NodeInfo.copy(NodeInfo.java:568)
at net.sf.saxon.event.ComplexContentOutputter.decompose(ComplexContentOutputter.java:860)
at net.sf.saxon.event.ComplexContentOutputter.append(ComplexContentOutputter.java:656)
原因似乎是节点属性类型的 node.getLocalName() 为 Domino 返回 null。如果将 DOM 转换为 Tiny Tree 或使用 DOMWrapper 将其传递给 Saxon,则相同的设置有效。
Xquery 使用多米诺骨牌,预计可以工作,抛出异常。
【问题讨论】:
-
我认为就 DOM 而言,Saxon 需要一个命名空间感知 DOM。
-
但是相同的模型,在使用 TinyTree 和 DOM 时也可以工作。 Domino 有什么不同吗?
-
我认为只有 Michael Kay 可以回答这个问题,所以你必须等到他出现在这里,或者,如果它很紧急,也许可以删除你的 * 问题并尝试在saxonica.plan.io/projects/saxon/issues 提出问题。
-
是的,会这样做,谢谢你的帮助!
标签: dom domdocument saxon domparser