首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java从UTF-16LE字符串解析XML

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

Stack Overflow用户
提问于 2012-12-18 01:19:36
回答 2查看 2.5K关注 0票数 1

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

代码语言:javascript
复制
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。另外,下面是我在堆栈跟踪的顶部得到的异常:

12-18 13:51:12.978: W/System.err(5784):org.xml.sax.SAXParseException:预期名称(position:START_TAG @1:2 in java.io.InputStreamReader@4118c880) 12-18 13:51:12.978: W/System.err(5784):at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:146) 12-18 13:51:12.978: W/System.err(5784):at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-18 03:18:37

以下是我最终要做的事情:

代码语言:javascript
复制
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?

票数 2
EN

Stack Overflow用户

发布于 2012-12-18 06:37:26

在同一个程序中,不需要在字符串和字节之间来回转换。它就像这样简单:

代码语言:javascript
复制
String xml = "<root><tag>Hello World!</tag></root>";

Document dom = DocumentBuilderFactory.newInstance()
    .newDocumentBuilder().parse(new InputSource(new StringReader(xml)));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13918860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档