dom4j解析xml文件,xml的编码是utf-8,里边的中文解析出来是乱码,怎么解决? 文件用ie打开是正常的。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dom4j解析xml文件,xml的编码是utf-8,里边的中文解析出来是乱码,怎么解决? 文件用ie打开是正常的。相关的知识,希望对你有一定的参考价值。

不太清楚在哪需要转码,求助!!
照着1楼的方法弄了下,重新保存成txt再解析也是乱码。
我已经试出来了,用saxReader.read(FileInputStream)可以解决

我想你的开发环境是多字节吧。给你写了一个例子:
char* xmlBuff; //保存XML的数据
int unicodeNum = MultiByteToWideChar(CP_UTF8, 0, xmlBuff, -1, null, 0); //预先得到转换后的长度
wchar_t* unicodeArr = new wchar_t[unicodeNUm + 1];
memset(unicodeArr,0,(unicodeNUm+1)*sizeof(wchar_t));
MultiByteToWideChar( CP_UTF8, 0, xmlBuff, -1, (LPWSTR)unicodeArr, unicodeNUm);
参考技术A OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter( new FileWriter(new File("另存名.txt")),format);
writer.write(document);
writer.close();

晕,用那个解决了?那说明你一开始就没有解析正确啊!!!!
SAXReader类的读取是第一步就要的....
参考技术B 从xml读取出来的时候再进行一次转码就行了

xml文件的语法

xml文件的语法
1)文档声明
<?xml version="1.0" 指明XML文件的版本号,XML解析器就会采用对应的版本进行解析
encoding="UTF-8" 指明XML文件中的中文采用UTF-8编码,在IDE工具中,指明该文件的保存编码方式?
standalone="yes或no" 指明XML文件需要初其它文件DTD约束的话,就是no,如果单独的XML文件,就是yes>
各浏览器中的XML解析器只对XML文件的语法检测

2)元素
1)通常元素都有开始和结束标签,但也可以使用空标签,即<a></a>=<a/>
2)XML中标签嵌入顺序必须一致,且字符大小写不一致
3)程序会将标签内的空白字符当作有效字符对待

3)属性(附加信息的描述)
1)属性由属性名和属性值组成,属性值由定界符""或‘组合
2)当一个事务必须与对象绑定在一起,没有该对象,该事务就没有意义,此时该事务就应成为对象的属性。

4)注释(不能随意嵌套)
<?xml version="1.0" encoding="UTF-8"?>
<root>

GZ
<510520>
BJ
110120 ]]> 1)给程序员看的 2)不能嵌套使用 5)CDATA区 、特殊字符 1)Character Data(字符数据区/段) 2)CDATA段中的数据不会被XML解析器所解析 3)不能嵌套使用 4)XML内置5种转义字符 < > & " ‘ 5)其它字符: ★ 6)处理指令(processing instruction) 1)可以使用CSS装饰XML文件中的内容 2)CSS目前版本只能支持英文标签

以上是关于dom4j解析xml文件,xml的编码是utf-8,里边的中文解析出来是乱码,怎么解决? 文件用ie打开是正常的。的主要内容,如果未能解决你的问题,请参考以下文章

DOM4J解析xml

基于DOM4J的XML文件解析类

XML文件解析-DOM4J方式和SAX方式

java中利用dom4j解析XML文件

Dom4j解析xml文件

使用DOM4J解析XMl文件与读取XML文件