XSLTを使用してXML文書を変換しようとしています。入力として私はwww.wordpress.orgのXHTMLソースコードを持ち、XSLTはサイトのタイトルを取得するダミーの例です(実際には何もできません - 何も変わらない)。Javaでの非常に遅いXSLT変換
私が使用するすべてのAPIまたはライブラリは、変換に約2分かかります! wordpress.orgのソースを見てみると、それは183行だけであることがわかります。私はグーグルでそれはおそらくDOMツリーの構築のためです。どんなにシンプルなXSLTであっても、それは常に2分なので、DOM構築に関連していると考えられますが、とにかく2分かかるとは限りません。ここで
は、サンプルコード(何も特別な)です:
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = null;
try {
transformer = tFactory.newTransformer(
new StreamSource("/home/pd/XSLT/transf.xslt"));
} catch (TransformerConfigurationException e) {
e.printStackTrace();
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
System.out.println("START");
try {
transformer.transform(new SAXSource(new InputSource(
new FileInputStream("/home/pd/XSLT/wordpress.xml"))),
new StreamResult(outputStream));
} catch (TransformerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("STOP");
System.out.println(new String(outputStream.toByteArray()));
それはJavaが2分間 "一時停止" STARTとSTOPの間です。プロセッサーやメモリーの使用状況を見ても、何も増えません。実際にJVMが停止したようです...
50(これは乱数です))行より長いXMLを変換する経験はありますか?私が読んでいるように、XSLTはその作業を行うために常にDOMツリーを構築する必要があります。私にとっては、高速な変換が不可欠です。事前に
おかげで、問題はコールtransfomer.transformではないです ピョートル
「wordpress.xml」のサイズはどれくらいですか? – Davidann
www.wordpress.orgですXHTML - これは183行(既にラップされています)です –
xmlとxsltファイルを投稿できますか?何か他のもの:あなたの出力がByteArrayOutputStreamの場合、通常は入力はRTF-8ですが出力はできないため、問題が発生する可能性があります。 – luiscolorado