`
daidalei321
  • 浏览: 110769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Dom4j中文编码问题

阅读更多

 

 

使用Dom4j,要把一个Dom中的数据写入到文件非常简单,API如下:
   public void write(Writer writer) throws IOException;

因此,假如我们要把一个Document写入到c:\test.xml文件中,可以简单的使用下面的代码即可:
       java.io.Writer wr= new java.io.FileWrite(filename);
   doc.write(wr);
       wr.close();//注意,必须要执行close()方法,才会实现真正的写入
  
  这种用法也是Dom4j所推荐我们使用的非常简单的方法。然而,当我们的dom中包含有中文字符数据的

时候,这种方法写入的xml文档却无法使直觉打开。会提示类似如下的错误:
   org.dom4j.DocumentException: invalid byte 1 of 1-byte UTF-8 sequence (0xb2) Nested

       exception: invalid byte 1 of 1-byte UTF-8 sequence (0xb2)
       at org.dom4j.io.SAXReader.read(SAXReader.java:484)
       at org.dom4j.io.SAXReader.read(SAXReader.java:343)

  我们可以看生成的xml文件编码,内容是utf-8的,但文件格式确是ANSI的

原因分析:
  由于FileWriter默认的输出编码是ANSI编码,而Dom4j中的wirte方法提供的内容实际是以UTF-8保存

的,因此造成了包括中文字符的XML文件无法正常阅读。

解决方法:
  不能使用简单的FileWriter,而应该是使用一个能指定具体输出编码的Writer,在JDK的io包中,

OutputStreamWriter可以指定输出编码。
  正确的代码如下:
      java.io.OutputStream out=new java.io.FileOutputStream(fileName);
      java.io.Writer wr=new java.io.OutputStreamWriter(out,"UTF-8");
     doc.write(wr);
     wr.close();
     out.close();
   简化一下可以写成下面的样式:
   java.io.Writer wr=new java.io.OutputStreamWriter(new          java.io.FileOutputStream(fileName),"UTF-8");
       doc.write(wr);
       wr.close();

 

 

 

 

分享到:
评论

相关推荐

    dom4j 输出XML时中文乱码解决

    然而,在使用 Dom4J 输出 XML 文档时,中文字符可能会出现乱码问题。这是因为 Dom4J 的默认编码方式可能不支持中文字符。解决这个问题的方法是将输出编码方式设置为 UTF-8。 设置输出编码方式 ------------------ ...

    Dom4j解析XML及中文问题

    本文将深入探讨如何使用Dom4j解析XML以及解决中文乱码的问题。 首先,让我们了解Dom4j的基本用法。在解析XML文件时,通常会使用`DocumentBuilderFactory`和`DocumentBuilder`来创建一个`Document`对象,然后通过这...

    dom4j中文彻底解决

    通过这种方式,我们可以确保DOM4J生成的XML文件采用正确的字符编码,避免了可能出现的乱码问题。同时,这也提醒我们在使用任何处理文本输出的API时,都要注意指定正确的编码,以保证跨平台和多语言环境下的兼容性。 ...

    Dom4j API 及各种 中文 介绍文档 帮助文档

    此包有以下资源: dom4j API DOM4J 使用简介 dom4j(Version 1[1].6.1)快速入门 Matrix - 与 Java 共舞 - Dom4j 编码问题彻底解决 使用 dom4j 解析 XML

    dom4j

    此外,通过设置正确的字符集编码,可以避免中文乱码的问题。以下是格式化XML文档的相关代码: ```java // 使用SAXReader读取XML文件 SAXReader saxReader = new SAXReader(); Document document = saxReader.read...

    dom4j-1.6 的jar包以及中文处理问题

    提供的`Dom4j解析XML及中文问题(普通下载).pdf`可能详细介绍了在DOM4J中处理中文字符的步骤和示例。而`dom4j-1.6.1`则是DOM4J的1.6.1版本的jar包,包含了DOM4J的所有类和方法,可以直接引入到项目中使用。 在实际...

    dom4j解析XML文件格式

    ### DOM4j解析XML文件格式详解 #### 一、DOM4j概述与环境搭建 DOM4j(Document Object Model for XML)是一款Java平台上的开源XML处理库,它提供了灵活、高效且易于使用的API来处理XML数据。DOM4j支持DOM、SAX、...

    dom4j解析XML

    并且在Java代码中,使用UTF-8编码读写文件,避免乱码问题。 7. **TestDOM4j** 压缩包中的`TestDOM4j`文件可能是一个测试程序,它展示了如何应用上述操作。通过阅读和运行这个程序,你可以更好地理解DOM4J在实际...

    Dom4j解析XML

    ### Dom4j解析XML及其中文问题解决 #### 一、Dom4j简介 Dom4j是一种用于处理XML的Java库,它提供了一种简洁而强大的API来读取、写入和操作XML数据。自2001年首次发布以来,Dom4j因其直观的接口和高效的性能而在...

    Dom4j解析XML.pdf

    对于XML中的中文问题,Dom4j通常能够正确处理UTF-8编码的XML文档。如果在处理中文字符时遇到乱码,可能需要检查XML文档的编码声明是否正确,或者确保读写操作中使用的字符编码与XML文档一致。 此外,Dom4j还提供了...

    j2ee dom4j JavaScript struts2帮助文档

    《j2ee dom4j JavaScript struts2帮助文档》是一个包含多个技术领域的综合资源包,主要涉及Java企业级开发中的核心技术和工具。该压缩包包含了以下几个关键文件: 1. **J2EE研究文集.chm**:这是一部关于Java企业版...

    最简单而强大读写xml的方法(DOM4J经典API)(学习自用备份).pdf

    DOM4J是一个非常流行的Java库,用于处理XML文档。它提供了强大的API,使得XML的读写操作变得简单而高效。这篇文档主要介绍了如何使用DOM4J库进行XML的读写和修改。 首先,我们来看一下写XML的示例。在这个例子中,`...

    ping4j 汉字转英文控件

    在处理汉字转英文时,可能会遇到的问题包括编码格式不一致导致的乱码,或者是某些特殊汉字无法准确转换的情况。ping4j控件可能已经考虑并解决了这些问题,提供了一种稳定和高效的解决方案。开发者在使用过程中应仔细...

    readorwritexml

    ### DOM4j解析XML知识点详解 #### 一、DOM4j简介 DOM4j是一个用于处理XML的Java库,它提供了强大的API来进行XML文档的创建、解析、查询和修改等功能。DOM4j的设计简洁直观,使得开发者能够轻松地进行XML处理任务。...

    java jsp生成中文xml

    以上代码示例展示了如何使用DOM4J在Java JSP环境中生成包含中文字符的XML文档。注意,为了防止中文乱码,需要在整个过程中保持UTF-8编码的一致性,包括JSP页面的编码设置、文件的保存编码以及HTTP响应的Content-Type...

    xml生成解析

    1. 创建 `InputSource` 对象,设置其编码为 "UTF-8",以确保正确处理中文字符,避免乱码问题。 2. 使用 `SAXReader` 实例化一个 XML 解析器,`SAXReader` 是基于事件驱动的解析器,效率较高。 3. 调用 `reader.read...

    做一般的XML数据交换过程中,我更乐意传递XML字符

    在XML数据交换中,选择以XML字符串的形式进行传输有其便利之处,因为它占用空间小,且易于在网络上传输。...同时,注意处理XML中的编码问题,特别是当涉及到中文字符时,确保正确设置编码以避免乱码问题。

    Android开发问题集锦第四期

    - **引入Apache Ant库**:这是一个较为常见的解决方案,Apache Ant库不仅能够帮助解决中文乱码问题,还包含了完整的DOM解析库(如dom4j),可以用来处理XML文档等。然而,这样做也会导致应用程序的体积增大,因为Ant...

    基于Java创建XML(无中文乱码)过程解析

    基于Java创建XML(无中文乱码)过程解析 Java是当前最流行的编程语言之一,在软件开发中广泛应用。...我们学习了如何使用Dom4j库来创建XML文件,并解决了中文乱码问题。希望本文能够对大家的学习和工作产生帮助。

    JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容

    在JavaScript中,中文字符是Unicode编码,可以通过`charCodeAt()`方法获取每个字符的Unicode值。但是,直接使用这个方法无法得到对应的拼音,因为它返回的是数字而非汉字的拼音表示。 为了将中文字符转换为拼音,...

Global site tag (gtag.js) - Google Analytics