我想解析嵌入在文件中的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