一、不含自定義字元或含較少量的特殊字元
一般的特殊字元有五個:&,<,>,』(單引號),」(雙引號)。這些字元如果直接出現在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...