SAX解析含特殊字元的xml文件(java)

2021-09-01 16:57:56 字數 1454 閱讀 3049

一、不含自定義字元或含較少量的特殊字元

一般的特殊字元有五個:&,<,>,』(單引號),」(雙引號)。這些字元如果直接出現在xml文件中,一般是不能解析出來的,如解析a&b時會報錯。解決方法有兩個:1.

用標記;2.轉義。

1. 

用標記

對於含特殊字元的element用標記起來即可成功解析,如

該方法簡單但不實用,對於每個含特殊字元的element都要用標記。數量很少是推薦用這種方法。

2.  轉義

特殊字元數量很多時方法1顯然不實用,此時可用轉義來實現:

< <

小於號

> >

大於號

& & 和

' '

單引號

" "

雙引號

即將xml中的特殊文件全部替換為轉義字元,如a&b變成a&b。

但是對於這種情況解析過程會發生變化,不是一次性解析a&b,而是分三步,先解析a,然後是&,然後是b,因此要注意想要獲得中資料必須要用string變數將這三部分加起來。即解析程式中

stringbuffer contentbuffer = new stringbuffer();

publicvoidcharacters(charch,intstart,intlength)

throwssaxexception

} 這樣解析出的example變數才是a&b,如果直接用

example=date;

得到的example

的變數的只是b。

二、含自定義字元或含較多的特殊字元(用

dtd檔案驗證)

dtd

如何解析含dtd的xml檔案呢?

將dtd檔案匯入當前工程,在xml檔案中加入

檔名system "src/dblp.dtd">即可。

如解析aüb,在dtd檔案中宣告

驗證ü代表字元ü。

三、含單引號的xml解析後插入資料庫:

用上面方法可以解析出xml中含單引號的資料(string型資料),但要將資料插入資料庫中卻很容易出現問題,因為sql語句中不允許單獨的單引號存在,解決辦法很簡單,將解析所得的資料中的單引號用函式replaceall()替換成雙引號在插入資料庫即可。

四、解析含較多實體引用的大型的xml文件(如1g)

xml即單個xml檔案中實體引用超過了預設值64000個。這時只要在解析前設定單個xml檔案中實體引用的最大數量即可,system.setproperty("entityexpansionlimit", "***xx");。***xx代表設定的單檔案實體引用數最大值。

XML的解析 SAX方式

xml的解析兩種方式,我們來先看第一種,不需要在記憶體中排成樹型結構再去解析的。xml檔案如下 viewcontroller中實現 void viewdidload下面看核心部分 自定 析類 1.建立解析類,並傳入要解析的檔案 nsarray parsebookswithxmlfilename ns...

xml的sax解析方法

xml的sax解析方式在找到結點開始標誌時,呼叫 1 void parser nsxmlparser parser didstartelement nsstring elementname namespaceuri nsstring namespaceuri qualifiedname nsstri...

xml的sax解析方法

xml的sax解析方式在找到結點開始標誌時,呼叫 1 void parser nsxmlparser parser didstartelement nsstring elementname namespaceuri nsstring namespaceuri qualifiedname nsstri...