日期:2014-05-20  浏览次数:20879 次

如何从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>