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

Posted 朱季谦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java解析xml文件遇到特殊符号&会出现异常的解决方案相关的知识,希望对你有一定的参考价值。

文/朱季谦

在一次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文件遇到特殊符号&会出现异常的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

XML 解析 & 特殊字符报错

WPF XAML 特殊字符(小于号大于号引号&符号)

如何处理 XML 中 URL 中的特殊字符

xml特殊字符处理

python 处理xml 遇到特殊符号解析错误的情况

mybatis if判断中的特殊符号