Я пытаюсь преобразовать XML-документ, используя XSLT.В качестве входных данных у меня есть www.wordpress.org исходный код XHTML, а 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()));
Это между START и STOP, когда java "останавливается" на 2 минуты.Если я взгляну на использование процессора или памяти, ничего не увеличится.Похоже, что действительно JVM остановлена ...
Есть ли у вас опыт преобразования XML-строк длиннее 50 (это случайное число;)) строк?Поскольку я читаю, XSLT всегда должен строить дерево DOM, чтобы выполнять свою работу.Для меня очень важно быстрое преобразование.
Заранее спасибо, Петр