当前位置: 代码迷 >> J2EE >> 怎么从UTF-8的XML中读取中文
  详细解决方案

怎么从UTF-8的XML中读取中文

热度:419   发布时间:2016-04-22 03:29:35.0
如何从UTF-8的XML中读取中文
XML文件中用的是UTF-8编码,可是又包含中文,该怎么解决?
直接解析肯定是不行的,但是如果我先用GBK替换<?xml version="1.0" encoding="UTF-8"?>中的UTF-8的话,仍然会出现org.xml.sax.SAXParseException: An invalid XML character错误。

XML输入:
XML code
<?xml version="1.0" encoding="UTF-8"?><Files Domain="odpsfile" Path="2008"><File FileTempPath="6c08a588-c245-11dc-958a-d1128874cdde.doc" Index="1" Name="卫生防疫.doc" Title="新建"/></Files>


JAVA代码
Java code
String input = glwj.replace("UTF-8","GBK");DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();DocumentBuilder documentBuilder = dbf.newDocumentBuilder();Document doc = documentBuilder.parse(StringBufferInputStream(input));


------解决方案--------------------
你是不是文件编码不对...用记事本打开,然后另存看下.

是否是UTF-8,或者如果是ANSI,就一定错了.

如果你的类本身是UTF-8编码,一般不会有问题.

不知道你是jdom,还是dom4j....
------解决方案--------------------
先取到对应节点的值,然后转码

Dom4j为例子

Node node=document.selectSingleNode("/Files/File/@Name");
String text=node.getText();
text=new String(text.getBytes("UTF-8"),"GBK");
------解决方案--------------------
用jdom来试试。

XML code
<?xml version="1.0" encoding="UTF-8"?><Files Domain="odpsfile" Path="2008"><File FileTempPath="6c08a588-c245-11dc-958a-d1128874cdde.doc" Index="1" Name="卫生防疫.doc" Title="新建"/></Files>
  相关解决方案