0

目前 Psychopath Xpath 处理器使用 XercesLoader 类加载字节流并创建 org.w3c.dom.Document 并且可以传递它来评估 Xpath。

 InputStream is = new FileInputStream("resources/test.xml");
 DOMLoader loader = new XercesLoader(); 
 Document doc = loader.load(is);

我使用 axiom 创建了 org.w3c.dom.Document 并将其传递给 Psychopath。

    InputStream is = new FileInputStream("resources/test.xml");

    OMMetaFactory omMetaFactory = OMAbstractFactory.getMetaFactory(OMAbstractFactory.FEATURE_DOM);
    OMFactory omFac = omMetaFactory.getOMFactory();
    OMXMLParserWrapper wrapper = OMXMLBuilderFactory.createOMBuilder(omFac, is) ;
    Document doc = (Document) wrapper.getDocument(); 

但是当通过 doc2 它给出了错误

线程“main”org.w3c.dom.DOMException 中的异常:NOT_SUPPORTED_ERR:实现不支持请求的对象或操作类型。在 org.apache.axiom.om.impl.dom.DOMUtil.newDOMException(DOMUtil.java:82) 在 org.apache.axiom.om.impl.dom.NodeImpl.compareDocumentPosition(NodeImpl.java:212) 在 org.eclipse .wst.xml.xpath2.processor.internal.types.NodeType.compare_node(NodeType.java:219) 在 org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType.access$0(NodeType.java:207 ) 在 org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType$1.compare(NodeType.java:64) 在 java.util.TreeMap.put(TreeMap.java:545) 在 java.util.TreeSet .add(TreeSet.java:255) 在 java.util.AbstractCollection.addAll(AbstractCollection.java:342) 在 java.util.TreeSet.addAll(TreeSet.java:

需要解释。如何将使用公理制作的 DOM 文档实例传递给 Psychopath 以评估 XPath?

4

1 回答 1

0

解释很简单:Axiom 的 DOM 实现没有实现compareDocumentPosition方法(由 DOM 3 定义)。

于 2013-09-29T12:01:08.657 回答