java - 修复 XML 文件中的错误编码

标签 java xml parsing encoding xerces

我们的一个提供商有时会发送标记为 UTF-8 编码文档但包含未包含在 UTF-8 字符集中的字符的 XML 提要。这会导致解析器在遇到这些字符时抛出异常并停止构建 DOM 对象:

DocumentBuilder.parse(ByteArrayInputStream bais) 

抛出以下异常:

org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.

有没有办法及早“捕获”这些问题并避免异常(即从流中查找和删除这些字符)?我正在寻找的是针对错误编码文档的“尽力而为”类型的回退。正确的解决方案显然是从源头上解决问题并确保只交付正确的文档,但如果无法做到这一点,什么是好的方法呢?

最佳答案

如果问题确实是错误的编码(而不是混合编码),您不需要重新编码文档来解析它。只需将其解析为 Reader 而不是 InputStream,dom 解析器将忽略 header :

DocumentBuilder.parse(new InpputSource(new InputStreamReader(inputStream, "<real encoding>")));

关于java - 修复 XML 文件中的错误编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/216890/

相关文章:

java - SimpledateFormat的parse方法java

android - 无法解析 Azure 云存储中的连接字符串

java - 无法从嵌套对象获取属性

java - 如何在 Java 中生成内部分离的 XML 签名

parsing - LR(1)-元素,向前看

java - Apache POI Excel 表格-TotalsRow

Android 高度不适用于不同的圆角矩形

java - 在 Android 上使用 Facebook 登录

java - JBoss5 CLIENT-CERT 身份验证获取 HTTP 状态 401 - 无法使用提供的凭据进行身份验证错误

java - 调用 Main 中的方法