文/朱季谦

在一次Java解析xml文件的开发过程中,使用SAX解析时,出现了这样一个异常信息:

Error on line 60 of document : 对实体 "xxx" 的引用必须以 ';' 分隔符结尾;

我打开xml文件后,发现该“xxx"符号之前跟着一个”&“符号,后来了解到,这类符号在xml里属于一种特殊符号,而特殊符号若没用转义符表示,直接用到xml文件里,就会在使用SAX等方式做解析时出现奇怪的异常。

其实,这都是因为这些特殊字符造成的。

XML当中特殊符号包括< > & ' "等,它们是不允许作为xml文件的PCDATA,若想使用话,需用转义符代替:

&lt;    <
&gt; >
&amp; &
&quot; "
&apos; '

那么,若要正常读取xml文件数据,应该如何使用转义符替换呢?

实现思路其实很简单,我们可以在使用SAX解析前,先把xml文件读取转换成String字符串,再使用字符串的全部替换方法替换即可:

  String xmlStr=s.replaceAll("&","&amp;");

转换方法代码如下:

  StringBuffer buffer = new StringBuffer();
BufferedReader bf= new BufferedReader(new FileReader("D:\\测试.xml"));
String s = null;
while((s = bf.readLine())!=null){
buffer.append(s.trim());
} String str = buffer.toString();
//在这一步进行字符替换,替换成合法转义字符
String xml=str.replaceAll("&","&amp;"); //这里就可以将处理过的xml文件进行读取解析了
Document document = DocumentHelper.parseText(xml);

至此,就可以解决Java解析xml文件遇到特殊符号&会出现异常的问题了。

Java解析xml文件遇到特殊符号&会出现异常的解决方案的更多相关文章

  1. java解析xml文件并输出

    使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...

  2. 使用Java解析XML文件或XML字符串的例子

    转: 使用Java解析XML文件或XML字符串的例子 2017年09月16日 11:36:18 inter_peng 阅读数:4561 标签: JavaXML-Parserdom4j 更多 个人分类: ...

  3. java解析XML文件

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...

  4. JAVA解析XML文件(DOM,SAX,JDOM,DOM4j附代码实现)

    1.解析XML主要有四种方式 1.DOM方式解析XML(与平台无关,JAVA提供,一次性加载XML文件内容,形成树结构,不适用于大文件) 2.SAX方式解析XML(基于事件驱动,逐条解析,适用于只处理 ...

  5. Java解析XML文件的方式

    在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...

  6. java 解析xml文件案例

    package xmlTest; import javax.xml.parsers.*; import org.w3c.dom.*; public class GetXml { public stat ...

  7. 关于java解析xml文件出现的问题

    DOM解析xml文件 问题1:导入javax.xml.parsers.DocumentBuilderFactory出现问题,如图: 解决办法是:由于创建工程时有个默认的jre,重新创建工程改掉就解决了 ...

  8. java解析XML文件四种方法之引入源文件

    1.DOM解析(官方) try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();         Documen ...

  9. 【JAVA解析XML文件实现CRUD操作】

    一.简介. 1.xml解析技术有两种:dom和sax 2.dom:Document Object Model,即文档对象模型,是W3C组织推荐的解析XML的一种方式. sax:Simple API f ...

随机推荐

  1. Java中的IO流 - 入门篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的IO流-入门篇>,希望对大家有帮助,谢谢 由于Java的IO类有很多,这就导致我刚开始学的时候,感觉很乱,每次用到都是上网搜,结果 ...

  2. Android 在活动中使用 Menu

    •前行必备--创建 menu 首先,新建一个项目,选择 Empty Activity 选项,并命名为 Test Menu: 这样 Android Studio 自动为我们新建 MainActivity ...

  3. EfficientNet & EfficientDet 论文解读

    概述 总体而言,这两篇论文都在追求一件事,那就是它们名字中都有的 efficient.只是两篇文章的侧重点不一样,EfficientNet 主要时研究如何平衡模型的深度 (depth).宽度 (wid ...

  4. Elasticsearch 基础介绍

    # Elasticsearch简介 ## 基础概念 ​ Elasticsearch由Shay banon在2004年进行初步开发,并且在2010年2月发布第一个版本. ​ 此后Shay banon在2 ...

  5. epoll poll select区别

    函数依赖 ( Functional Dependency,FD) select:http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html ...

  6. angularjs 图片上传

    <input type="file" file-model="myFile"/><div class="col-md-12" ...

  7. OOUnit4Summary

    一.前三次作业的架构设计 前言 第四单元以uml建模语言为背景,让我们通过已有的模型架构,设计实现类图(顺序图,状态图)解析器:在理解uml整体架构体系的基础上,读懂并熟练运用官方的给的代码,设计有层 ...

  8. 安装电脑思考到了Java设计模式:建造者模式

    目录 定义 意图 主要解决问题 何时使用 优缺点 结构 组装电脑的例子 定义 建造者模式是对象的创建型模式,可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表 ...

  9. Message Decoding UVA - 213

     Some message encoding schemes require that an encoded message be sent in two parts. The fifirst par ...

  10. matlab数值类型

    matlab数值类型 数值类型的分类 整数类型    整数类型有8种.上面的数字为其内存大小,如:int8,整数所占内存大小为8个字节.除了int64 和 uint64不能进行数值运算之外都可以. 类 ...