最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java解析xml文件遇到特殊符號異常的情況(處理方案)

 更新時間:2021年05月14日 08:31:50   作者:朱季謙  
這篇文章主要介紹了Java解析xml文件遇到特殊符號&會出現(xiàn)異常的解決方案,實現(xiàn)思路很簡單通過在讀取xml文件使用SAX解析前讀取reader,具體實現(xiàn)方法及示例代碼跟隨小編一起看看吧

在一次Java解析xml文件的開發(fā)過程中,使用SAX解析時,出現(xiàn)了這樣一個異常信息:

Error on line 60 of document : 對實體 "xxx" 的引用必須以 ';' 分隔符結(jié)尾;

我打開xml文件后,發(fā)現(xiàn)該“xxx"符號之前跟著一個”&“符號,后來了解到,這類符號在xml里屬于一種特殊符號,而特殊符號若沒用轉(zhuǎn)義符表示,直接用到xml文件里,就會在使用SAX等方式做解析時出現(xiàn)奇怪的異常。

其實,這都是因為這些特殊字符造成的。

XML當(dāng)中特殊符號包括< > & ' "等,它們是不允許作為xml文件的PCDATA,若想使用話,需用轉(zhuǎn)義符代替:

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

那么,若要正常讀取xml文件數(shù)據(jù),應(yīng)該如何使用轉(zhuǎn)義符替換呢?

剛開始是想百度一番如何解決,卻發(fā)現(xiàn)好多帖子都是好幾年前的,且都沒有寫清楚怎么個解決方法,大多都是提到是特殊符號引起的解析異常,但怎么過濾掉,顯得含糊其辭,因此,只能自己胡亂搗鼓一番,搗鼓出一個比較合適的將特殊字符過濾的方案。

實現(xiàn)思路其實很簡單,我們可以在讀取xml文件使用SAX解析前,先把xml文件通過Reader讀取,然后按行讀取出來拼接成一個String字符串,再使用字符串的替換方法replaceAll()將特殊符號進(jìn)行替換,替換后,就可以將字符串形式的xml直接轉(zhuǎn)成Document對象做xml解析了:

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

轉(zhuǎn)換方法代碼如下:

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();
  //在這一步進(jìn)行字符替換,替換成合法轉(zhuǎn)義字符
  String xml=str.replaceAll("&","&amp;");

  //這里就可以將處理過的xml文件進(jìn)行讀取解析了
  Document document =  DocumentHelper.parseText(xml);

至此,就可以解決Java解析xml文件遇到特殊符號&出現(xiàn)異常的問題了。

以上就是Java解析xml文件遇到特殊符號異常的情況(處理方案)的詳細(xì)內(nèi)容,更多關(guān)于Java解析xml文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Prometheus+Grafana的方法監(jiān)控Springboot應(yīng)用教程詳解

    使用Prometheus+Grafana的方法監(jiān)控Springboot應(yīng)用教程詳解

    這篇文章主要介紹了用Prometheus+Grafana的方法監(jiān)控Springboot應(yīng)用,本文通過實例代碼詳解給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Java將word文件轉(zhuǎn)成pdf文件的操作方法

    Java將word文件轉(zhuǎn)成pdf文件的操作方法

    這篇文章主要介紹了Java將word文件轉(zhuǎn)成pdf文件的操作方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 將java程序打包成可執(zhí)行文件的實現(xiàn)方式

    將java程序打包成可執(zhí)行文件的實現(xiàn)方式

    本文介紹了將Java程序打包成可執(zhí)行文件的三種方法:手動打包(將編譯后的代碼及JRE運行環(huán)境一起打包),使用第三方打包工具(如Launch4j)和JDK自帶工具(jpackage),每種方法都有其優(yōu)缺點,可根據(jù)實際需求選擇合適的方式
    2025-02-02
  • Java線程優(yōu)先級變量及功能

    Java線程優(yōu)先級變量及功能

    這篇文章主要介紹了Java線程優(yōu)先級變量及功能,關(guān)于優(yōu)先級的問可能有兩個或更多線程被分配了相同的優(yōu)先級,那么它們的執(zhí)行取決于操作系統(tǒng),更多相關(guān)介紹,需要的小伙伴可以參考一下
    2022-06-06
  • 圖文詳解JAVA實現(xiàn)哈夫曼樹

    圖文詳解JAVA實現(xiàn)哈夫曼樹

    所謂哈夫曼樹就是要求最小加權(quán)路徑長度,這是什么意思呢?簡而言之,就是要所有的節(jié)點對應(yīng)的路徑長度(高度-1)乘以該節(jié)點的權(quán)值,然后保證這些結(jié)果之和最小。下面這篇文章就給大家詳細(xì)介紹
    2016-08-08
  • Java編程實現(xiàn)月食簡單代碼分享

    Java編程實現(xiàn)月食簡單代碼分享

    這篇文章主要介紹了Java編程實現(xiàn)月食簡單代碼分享,程序很簡單,喜歡的朋友可以拿過去玩玩。
    2017-11-11
  • Java設(shè)計模式七大原則之單一職責(zé)原則詳解

    Java設(shè)計模式七大原則之單一職責(zé)原則詳解

    單一職責(zé)原則(Single Responsibility Principle, SRP),有且僅有一個原因引起類的變更。簡單來說,就是針對一個java類,它應(yīng)該只負(fù)責(zé)一項職責(zé)。本文將詳細(xì)介紹一下Java設(shè)計模式七大原則之一的單一職責(zé)原則,需要的可以參考一下
    2022-02-02
  • SpringBoot Session共享實現(xiàn)圖解

    SpringBoot Session共享實現(xiàn)圖解

    這篇文章主要介紹了SpringBoot Session共享實現(xiàn)圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • JAVA設(shè)計模式---單例模式你知道嗎

    JAVA設(shè)計模式---單例模式你知道嗎

    這篇文章主要給大家介紹了關(guān)于Java單例模式,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • SpringBoot使用JavaCV處理rtsp流的示例代碼

    SpringBoot使用JavaCV處理rtsp流的示例代碼

    這篇文章主要為大家詳細(xì)介紹了SpringBoot使用JavaCV處理rtsp流,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2024-02-02

最新評論

盐池县| 太白县| 和静县| 那曲县| 勃利县| 弥渡县| 琼结县| 沅陵县| 汉沽区| 定西市| 深泽县| 基隆市| 马龙县| 田阳县| 石渠县| 英德市| 利川市| 尖扎县| 昭苏县| 华安县| 乌审旗| 海南省| 青冈县| 新津县| 马鞍山市| 黎城县| 论坛| 西华县| 墨江| 星子县| 滨海县| 新昌县| 察隅县| 东台市| 沁阳市| 衢州市| 镇平县| 沁阳市| 台山市| 建始县| 长寿区|