再次请教问题!!!来者同样有分! come in please! 帮忙的再给你555分!

tiger_wkh52741 2005-09-08 06:07:46
问题:
如何解决xml中,中文乱码的问题!

xml文件示例如下:
<?xml version="1.0" encoding="GB2312"?>
<root>
<Record>
<Item Name="Product_Code">1011</Item>
<Item Name="Product_Name">AC-DC 哈哈哈</Item>
</Record>
<Record><Item Name="Product_Code">2333</Item>
<Item Name="Product_Name">RRR- 测试</Item>
</Record>
<Record><Item Name="Product_Code">2333</Item>
<Item Name="Product_Name">REW- 测试dd</Item>
</Record>
</root>

通过java的dom来解析上面的xml,但是解析出来的原中文数据是乱码,甚是头痛!
查了一些资料,都说改掉<?xml version="1.0" encoding="GB2312"?> 这里就能解决,
但我测试后,仍然是乱码,哪位高手帮忙解决一下!
...全文
92 点赞 收藏 14
写回复
14 条回复
tiger_wkh52741 2005年09月09日
hehe ,to jFresH_MaN(Contributing to Eclipse):非常感谢你的解答,不过我的问题是这个所谓的xml文件其实是被转换成流的形式,然后用dom去解析它,这个问题我解决了,仅一个方法之差!唉.在下实在是知识浅薄哦!!

同时仍然谢谢所有光顾的朋友,结贴送分咯!
回复 点赞
simon0512 2005年09月08日
回复 点赞
jFresH_MaN 2005年09月08日
public class TestClass {

public static Document getXMLDocument() {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
}

Document doc = null;
try {
doc = db.parse("C:\\test.xml");
} catch (SAXException e) {
e.printStackTrace();
} catch (DOMException dom) {
dom.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return doc;
}

public static String getElementText(Element e) {
NodeList nl = e.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i);
if (n instanceof org.w3c.dom.Text) {
return n.getNodeValue();
}
}
return "";
}

public static void main(String[] args) {
Document doc=getXMLDocument();
Element root=doc.getDocumentElement();
NodeList rnl = root.getChildNodes();
for (int j = 0; j < rnl.getLength(); j++) {
Node rNode = rnl.item(j);
if (rNode.getNodeType() == Node.ELEMENT_NODE) {
if (rNode.getNodeName().equals("Record")) {
NodeList iNL = rNode.getChildNodes();
for (int k = 0; k < iNL.getLength(); k++) {
Node itemNode = iNL.item(k);
if (itemNode.getNodeType() == Node.ELEMENT_NODE) {
if (itemNode.getNodeName().equals("Item")) {
Element item=(Element)itemNode;
if(item.getAttribute("Name").equals("Product_Name")) {
System.out.println(getElementText(item));
}
}
}
}
}
}
}
}
}
回复 点赞
jFresH_MaN 2005年09月08日
刚才我测试了一下,用EditPlus建立了同样内容的xml
使用非常简单的DOM解析这个文件,结果没有乱码啊。
回复 点赞
奇伢 2005年09月08日
用jdom好像不会出现这样的问题吧。
回复 点赞
nkat 2005年09月08日
不是很明白,帮你顶一下吧
回复 点赞
kingofhawks 2005年09月08日
没做过,帮顶.
回复 点赞
asa516 2005年09月08日
不懂,帮你顶一下
回复 点赞
nintha 2005年09月08日
顶一下,用的是哪个DOM啊?
回复 点赞
wangyuqin 2005年09月08日
我用jdom做过,没有乱码的,非常简单的
回复 点赞
王洲 2005年09月08日
顶一下
回复 点赞
superslash 2005年09月08日
ding
回复 点赞
mengze1981 2005年09月08日
顶一下
回复 点赞
tiger_wkh52741 2005年09月08日
来捧场的朋友,也可以去http://community.csdn.net/Expert/topic/4255/4255609.xml?temp=.7560388 这里顶一下,同样有分!
回复 点赞
发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告