Случайная TransformerException, как ее решить? - PullRequest
1 голос
/ 24 июня 2010

Мое приложение записывает много XML-данных и случайным образом последнюю строку следующего фрагмента кода:

// Prepare the DOM document for writing
Source source = new DOMSource(node);

// Prepare the output stream
Result result = new StreamResult(stream);

// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);

.. throws ..

javax.xml.transform.TransformerException: java.io.IOException: Detected invalid substitute UTF-16: da89 4f ?

(дополнительноЯ не знаю почему, но это исключение - единственное, которое поднял vm на моем португальском языке как «Detectado replaceto UTF-16 inválido», я перевел его на «Обнаружен недопустимый заменитель UTF-16»)

Еще одна странная вещь - я использую UTF-8, а не UTF-16, в своих текстах я проверил это.И я считаю, что если бы проблема была в UTF, это не привело бы к случайному исключению, поскольку я получаю такое же количество текста для преобразования в XML.

Это исключение трудно воспроизвести, поскольку оно непроисходят всегда, и это происходит при преобразовании большого количества данных в XML.

Есть идеи, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 05 июля 2010

Обходной путь, который я мог бы придумать, - заставить программу повторно выполнить действие, если оно не выполнено.Поскольку это трудно воспроизвести, это никогда не должно происходить дважды подряд.

0 голосов
/ 24 июня 2010

Создайте свой источник из входного потока, а не читателя, и позвольте анализатору XML определить набор символов.

...