我想解析嵌入在文件中的UTF-16LE XML字符串。我能够将实际的字符串读入一个String对象,并且可以在监视窗口中查看XML,并且它看起来很好。问题是,当我尝试解析它时,异常不断抛出。我试图在getBytes行和InputStreamReader构造函数中指定UTF-16和UTF-16LE,但它仍会抛出异常。Java从UTF-16LE解析XML字符串
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
builder = builderFactory.newDocumentBuilder();
Document document = null;
byte[] bytes = xmlString.getBytes();
ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
InputSource is = new InputSource(new InputStreamReader(inputStream));
document = builder.parse(is); // throws SAXParseException
编辑:这是使用Android。此外,这是我在STACK TRACE顶部的例外情况:
12-18 13:51:12.978:W/System.err(5784):org.xml.sax.SAXParseException:name expected(position :START_TAG @ 1:2 in [email protected]) 12-18 13:51:12.978:W/System.err(5784):at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl在javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)
什么是wrmHeaderXml?一个字符串,一个对象还是waht?看来你是从字节转换为字符,然后再从字符转换为字节。为什么?如果你已经得到了这些字节,只要将它提供给InputSource(InputStream) – leonbloy
我想这是一个字符串。如果你有一个String对象(你声明你可以在控制台中查看它)比内部编码没有关系,因为它是一个Java String – Raffaele