这篇文章将为大家详细讲解有关Java如何解析xml文件遇到特殊符号异常的情况,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在一次Java解析xml文件的开发过程中,使用SAX解析时,出现了这样一个异常信息:
Error on line 60 of document : 对实体 "xxx" 的引用必须以 ';' 分隔符结尾;
我打开xml文件后,发现该“xxx"符号之前跟着一个”&“符号,后来了解到,这类符号在xml里属于一种特殊符号,而特殊符号若没用转义符表示,直接用到xml文件里,就会在使用SAX等方式做解析时出现奇怪的异常。
其实,这都是因为这些特殊字符造成的。
XML当中特殊符号包括< > & ' "等,它们是不允许作为xml文件的PCDATA,若想使用话,需用转义符代替:
< <
> >
& &
" "
' '
那么,若要正常读取xml文件数据,应该如何使用转义符替换呢?
刚开始是想百度一番如何解决,却发现好多帖子都是好几年前的,且都没有写清楚怎么个解决方法,大多都是提到是特殊符号引起的解析异常,但怎么过滤掉,显得含糊其辞,因此,只能自己胡乱捣鼓一番,捣鼓出一个比较合适的将特殊字符过滤的方案。
实现思路其实很简单,我们可以在读取xml文件使用SAX解析前,先把xml文件通过Reader读取,然后按行读取出来拼接成一个String字符串,再使用字符串的替换方法replaceAll()将特殊符号进行替换,替换后,就可以将字符串形式的xml直接转成Document对象做xml解析了:
String xmlStr=s.replaceAll("&","&");
转换方法代码如下:
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("&","&"); //这里就可以将处理过的xml文件进行读取解析了 Document document = DocumentHelper.parseText(xml);
Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。
关于“Java如何解析xml文件遇到特殊符号异常的情况”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。