我在解析XML时遇到以下异常。
Fatal error at line -1 Invalid character '�' encountered. No stack trace
我有一个字符串格式的XML数据,并使用DOM解析器进行解析。 我正在解析来自Java服务器发送到Blackberry客户端的响应数据。 我也尝试使用SAX解析器解析,但问题没有解决。 请帮忙。
我在解析XML时遇到以下异常。
Fatal error at line -1 Invalid character '�' encountered. No stack trace
我有一个字符串格式的XML数据,并使用DOM解析器进行解析。 我正在解析来自Java服务器发送到Blackberry客户端的响应数据。 我也尝试使用SAX解析器解析,但问题没有解决。 请帮忙。
您的字符流中有一个null字符,即char(0),它在XML文档中无效。如果原始字符串中不存在此字符,则很可能是字符解码问题。
我找到了解决方案,
我只是用trim()对其进行了修整, 并且它完美地运行了。
您的代码当前使用平台默认编码调用getBytes()
- 这很少是一个好主意。找出数据的真正编码,并使用它(很可能是UTF-8)。
如果Blackberry包括DocumentBuilder.parse(InputSource)
,那就更好了:
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
StringReader reader = new StringReader(xmlData);
try {
Document doc = docBuilder.parse(xml);
doc.getDocumentElement().normalize();
} finally {
reader.close();
}
for (int i=0; i < xmlData.length(); i++) {
// Use whatever logging you have on the Blackberry
System.out.println((int) xmlData.charAt(i));
}
ByteArrayInputStream
的基础即可。这样,您就永远不必处理文本编码。InputStream xml = new ByteArrayInputStream(xmlData.getBytes());
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xml);
doc.getDocumentElement().normalize();
xml.close();
以下是我用来解析的代码。