Java 从 UTF-16LE 字符串解析 XML

标签 java android xml saxparser utf-16

我正在尝试解析嵌入在文件中的 UTF-16LE XML 字符串。我能够将实际字符串读入 String 对象,并且我可以在监 window 口中查看 XML,它看起来很好。问题是当我尝试解析它时,异常不断被抛出。我已尝试在 getBytes 行和 InputStreamReader 构造函数中指定 UTF-16 和 UTF-16LE,但它仍然会引发异常。

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: 名称预期(位置:START_TAG @1:2 in java.io.InputStreamReader@4118c880) 12-18 13:51:12.978:W/System.err(5784):在 org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:146) 12-18 13:51:12.978: W/System.err(5784): 在 javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)

最佳答案

这是我最后做的:

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;

builder = builderFactory.newDocumentBuilder();      
Document document = null;
byte[] bytes = Charset.forName("UTF-16LE").encode(xmlString).array();
InputStream inputStream = new ByteArrayInputStream(bytes);
document = builder.parse(inputStream);

来源:How does one create an InputStream from a String?

关于Java 从 UTF-16LE 字符串解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918860/

相关文章:

java - 在调用父类(super class)的构造函数之前,有什么方法可以在 Java 中初始化子类的成员变量?

java - android - 无法解决方法 getSystemService 问题

java - 将类导出到 XML 的独立方法

java - 如何通过单击菜单项来更改布局?

Java 返回一个对象

android - 更改横向 Bottom Sheet 的位置 : "Side sheet"

android - android中的视频上传问题

java - 将元素添加到文档并使用 XPath 查找

javascript - 使用 Javascript 遍历 Xml

java - 如果 BeanIO 中的某些记录发生异常,则继续解析记录