Random TransformerException,如何解决?

时间:2010-06-23 21:41:17

标签: java xml exception random

我的应用程序编写了大量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);

.. ..引发

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

(另外,我不知道为什么,但是这个例外是vm用我的语言提出的唯一一个例外,葡萄牙语,作为“Detectado substituto UTF-16inválido”,我把它翻译成“检测到无效的UTF” -16替代“)

另一个奇怪的事情是我在我的文本中使用的是UTF-8,而不是UTF-16,我已经检查过了。并且,我相信如果UTF是问题,它不会导致随机异常,因为我得到相同数量的文本转换为XML。

此异常难以重现,因为它不会一直发生,并且在将大量数据转换为XML时会发生。

知道这里发生了什么吗?

2 个答案:

答案 0 :(得分:0)

从输入流构建源,而不是读者,让XML解析器找出字符集。

答案 1 :(得分:0)

我能想到的解决方法是让程序在失败时重新执行操作。由于难以复制,因此不应连续发生两次。