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

JDom解析带有中文的xml文件

阅读更多
   今天在做一个联通的河南Gis项目,具体负责封装n个地图的接口,请求是一个xml,应答也是xml,其中应答的xml中包括了一个地图图片的查看路径,在本地的话如:E:\map\126760551809313639457542095.jpg。具体很多细节问题没时间说了。
接口的入和出都是String类型,由于我只负责接口封装,所以我在本地硬盘建了一个xml模仿请求,然后通过jdom解析。下面附上关键的代码:
package com.pdager.mapservice.tool;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringReader;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class XmlTool {

public static String xmlToString(Document doc){

ByteArrayOutputStream byteRep = new ByteArrayOutputStream();
XMLOutputter docWriter = new XMLOutputter(Format.getPrettyFormat());
try{
docWriter.output(doc, byteRep);
}catch(Exception e){
e.printStackTrace();
}

return byteRep.toString();
}

public static Element stringToXml(String xml){

SAXBuilder builder = new SAXBuilder();
Document doc = null;
try {
doc = builder.build(new StringReader(xml));
} catch (JDOMException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

return doc.getRootElement();
}
}


上面的类为Document对象和String类型的互换。下面说说我碰到的问题:
1.有一个接口是要在地图上加点和加线,其中有一个xml带中文完全正常,另一个差不多的xml则报:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
解决办法:原来是txt的保存编码不一致,改成UTF-8就OK了.
2.地图上的点标注为乱码
解决办法:在servlet测试输出的时候用:XMLOutputter docWriter = new XMLOutputter();
docWriter.setFormat(Format.getCompactFormat().setEncoding("GB2312"));

上班时间,时间宝贵,今天到此为止!
0
0
分享到:
评论

相关推荐

    JDOM解析同名多节点的XML源代码

    本篇文章将深入探讨如何使用JDOM解析包含同名多节点且带有多个属性的XML源代码,以及如何从HTTP返回流中直接获取并解析XML数据。 首先,让我们理解XML文档的基本结构。XML文档由元素、属性、文本和注释等组成。同名...

    Java实现XML解析【JDom】

    要使用JDom解析XML文件,首先需要导入必要的库,如`org.jdom2.*`。然后,我们可以使用`SAXBuilder`类来构建XML文档的DOM表示: ```java import org.jdom2.Document; import org.jdom2.input.SAXBuilder; public ...

    dom和jdom解析

    DOM(文档对象模型)和JDOM是两种解析XML的方式。 DOM是一种W3C标准,它将XML文档转换为一棵树形结构,每个XML元素、属性、文本节点等都被表示为树中的节点。通过DOM,开发者可以遍历整个XML文档,访问和修改任何...

    JDOM创建和解析XML

    在"JDOM创建和解析xml的项目案例"中,可能包含了创建XML文档、添加元素、解析XML并执行特定操作等多个步骤。案例作者宋海康可能设计了一个实际的应用场景,比如管理书籍信息,其中包括创建XML文件来存储书籍数据,...

    JDOM-XML解析技术

    - **Namespace处理**:JDOM提供了处理XML命名空间的类,如`Namespace`,可以方便地处理带有namespace的XML元素。 - **事件驱动处理**:JDOM可以通过`ContentHandler`接口,结合SAX解析器实现事件驱动的XML处理。 ##...

    jdom 读取,建立,修改 xml

    **JDOM:XML处理的Java库**...总结来说,JDOM是处理XML的一种强大工具,提供了从XML文件解析到Java对象,创建XML文档,以及修改已有XML文档的能力。通过熟练掌握JDOM,Java开发者可以在XML相关的项目中更加高效地工作。

    解析xml的jar包

    - 解析带有命名空间的XML时,需要指定正确的命名空间前缀。 6. **事件驱动解析**: - 虽然JDOM主要基于DOM模型,但也可以使用`SAXBuilder`实现SAX解析。 - 配合`ContentHandler`接口,可以在解析过程中响应特定...

    解析XML的四种JAR包jdom.jar、SAX.jar、dom4j.jar、dom.jar

    在Java编程中,解析XML文档是常见的需求,为此,有多种库可供选择,其中包括jdom.jar、SAX.jar、dom4j.jar和dom.jar。这些JAR包提供了不同的API和解析策略,各有优缺点。接下来,我们将深入探讨这四种XML解析器。 1...

    jdom所需要的包对xml操作

    5. **命名空间支持**:JDOM提供对XML命名空间的全面支持,使得处理带有命名空间的XML文件变得简单。 在实际开发中,JDOM库通常与其他依赖库一起使用,例如,为了处理XML Schema验证,我们可能需要引入`javax.xml....

    xml解析器(带相关jar包)

    本资源提供的"xml解析器(带相关jar包)"是一个完整的解决方案,包含了处理XML文件的各个关键功能。 1. **获取XML文件对应的数据类**: 这个功能意味着解析器可以将XML文件的内容映射到Java对象,即数据类。通常,...

    jdom jar包附带源码下载

    SAXBuilder基于SAX(Simple API for XML),以事件驱动的方式解析XML文档,适合处理大型XML文件,因为它占用的内存较少。DOMBuilder则是基于DOM(Document Object Model)模型,一次性加载整个XML文档到内存,便于...

    jdom-1.1.1包

    此外,JDOM还支持XML命名空间的操作,方便处理带有命名空间的XML文档。 **序列化和输出XML** 构建好的XML文档可以通过`XMLOutputter`类将其转换为字符串或写入文件。这提供了对输出格式的控制,如是否使用缩进、...

    jdom 1.1 包

    6. **Namespace处理**:JDOM 1.1支持XML命名空间,允许开发者轻松地处理带有namespace的XML文档。 7. **异常处理**:JDOM的API设计遵循了Java的异常处理原则,提供了丰富的异常类,帮助开发者更好地处理可能出现的...

    Jdom.rar下载

    4. **`org.jdom.Namespace`**:管理命名空间,允许在XML文档中正确地引用带有前缀的元素和属性。 5. **`org.jdom.Content`**:这是一个接口,表示XML文档中的内容,包括元素、文本、注释等。 **三、使用JDOM解析...

    JAVA100例之实例71 使用JDOM操作XML

    在这个例子中,我们创建了一个表示学生的XML文件,每个学生作为一个`Student`元素,并带有"id"属性。然后,我们读取这个文件并打印出每个学生的ID和名字。 总结,JDOM作为Java处理XML的工具,提供了一种直观且高效...

    java开发教程Jdom使用教程

    Java开发中的JDOM是一个专门针对XML处理的开源库,它以Java为中心,提供了一种简洁、高效的API来解析、创建、修改和序列化XML文档。JDOM的设计目标是结合SAX和DOM的优点,同时减少它们的不足,使得XML处理更加直观和...

    java 操作xml文件(包含xml文件和对应jar包)

    例如,`javax.xml.parsers.DocumentBuilderFactory`的`setNamespaceAware(true)`方法可以开启命名空间感知,使解析器能够正确处理带有命名空间的XML。 压缩包中的项目可能已经实现了这些功能,通过阅读和理解代码,...

    jdom-2.0.5.jar(带一个源程序)

    1. **性能提升**:JDOM 2.0.5通过优化内部算法和数据结构,提高了XML文档的解析和构建速度。 2. **API简化**:为了提供更好的开发者体验,此版本可能对API进行了一些调整,使得代码更加简洁和直观。 3. **错误处理**...

    使用DOM4j解析XML文件

    在使用DOM4j解析XML文件时,首先需要导入DOM4j的相关包,如`SAXReader`用于读取XML文件,`Document`表示整个XML文档,`Element`表示XML文档中的元素,以及`Attribute`表示元素的属性。以下是一个使用DOM4j解析XML...

    jdom(1.0和1.1完整包)

    1. **Namespace Support**: 对XML命名空间提供了更完善的处理,使得处理带有命名空间的XML文档更加方便。 2. **Performance Enhancements**: 通过改进内存管理和解析速度,提高了JDOM的性能。 3. **API Changes and ...

Global site tag (gtag.js) - Google Analytics