2012-02-11 4 views
1

サクソンといくつかのxpathをパースしようとしていますが、いくつかのxpathをクエリしていますが、2つの問題があります。最初のものはsaxonが非常に短いため、xhtmlに非常に短いドキュメントを作成できません。サクソンは遅い解析です

Processor processorInstance = new Processor(false); 
    processorInstance.setConfigurationProperty(FeatureKeys.DTD_VALIDATION, false); 


    XPathCompiler XPathCompilerInstance = processorInstance.newXPathCompiler(); 
    XPathCompilerInstance.setBackwardsCompatible(false); 

    String expressionTitre = "//div[@class='score_global']/preceding-sibling::img[1]"; 

    XPathExecutable XPathExecutableInstance = XPathCompilerInstance.compile(expressionTitre); 
    XPathSelector selector = XPathExecutableInstance.load(); 
    logger.info("Xpath compiled."); 

    // Phase 2, load xml document. 
    DocumentBuilder documentBuilderInstance = processorInstance.newDocumentBuilder(); 
    documentBuilderInstance.setSchemaValidator(null); 
    documentBuilderInstance.setLineNumbering(false); 
    documentBuilderInstance.setRetainPSVI(false); 


    XdmNode context = documentBuilderInstance.build(new File("sample/sample.xml")); // This line takes ages to return. 

私は理解していないが、私はSAXでそれを行うならば、それは:(通常の速度でロードすることである 私はサクソン人に提供することを忘れなかった

のJava:。? コードはこれです1.6 サクソン9.1.0.8

第二の問題は、彼が私のXMLは、このようなものだったしながら、アクセント付き文字を処理することができないということである。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

xml:lang en lang =属性を削除しましたが、より良い運を得ました:(

ご意見はありますか? ありがとうございました!

答えて

2

よく読んだあと、CatalogResolverを定義し、Xhtml dtdsをローカルにダウンロードするだけで十分でした。私はsaxonを落とし、代わりに単純なJaxP/SaxReaderを使用しました。

このページhttp://xml.apache.org/commons/components/resolver/resolver-article.htmlは非常に興味深いことが判明しました。

この考えは、誰かにとって有用であることを望みます。

1

私はSaxonを検証しないように設定しましたが、それでもURIを解決しようとしましたが、それをローカルで見つけることができなかったので、彼はオンラインになり、W3cから& 503返す時間。 私のXMLでDTD宣言を削除しました。 私の次のステップは、それを解決しようとすることを止めることです。私は現在saxon docを読んでおり、エンティティリゾルバで遊んでいます。それは大丈夫です。

+0

これを他の「回答」と組み合わせてください。 2つの理由はありません。ありがとう。 –

関連する問題