2014-05-03 43 views
0

我正在創建一個DOMDocument。我是否應該將一個節點的值保存在一個<! [CDATA []]是否包含特殊字符?

問題很簡單,我有一個XML節點名稱爲<productName>

如果我想創建一個XML和值包含特殊字符像çøðé&,因爲應用程序會拋出異常

「代碼未終止的實體引用」我不能創建XML但我知道問題是字符"&",我應該做的,編碼字符到&amp;和解碼它,如果我想畫的價值,或者我應該設置值內

謝謝。

+0

在構建XML時嘗試使用'$ node-> appendChild($ doc-> createTextContent('&çøðé'))',這將正確地轉義任何特殊字符。 –

回答

0

&amp;將是正確的做法,然後當您導入xml文檔或在代碼中自動解碼它時,您將不得不手動編輯它。 CData的問題在於如果您使用的是XML解析器庫(我強烈建議使用,特別是如果您有大文件時),則不會解析此問題。我曾在一家出版公司工作過。他們會收到帶有不正確字符的XML文件,我將不得不通過該文件並刪除XML中的無效字符,並用其他字符替換它們。偶爾,不幸的是這是一個漫長而乏味的任務。您必須確保向您發送XML文件的人員不包含無效字符,如果他們是這樣,您可能必須有不幸的任務來查看文件並自行刪除它們。你可以通過編寫一個java程序來爲你刪除字符,但問題是,它可能無法捕捉到所有無效字符。如果您捕獲異常,大多數情況下您應該能夠查看異常並查看無效字符與您正在使用的解析器的位置,並且可能包含該無效字符的字節碼。我建議你使用TextPad來查找無效字符,因爲你可以按字節搜索,並且你可以找到「隱藏的」字符,否則你將不會在另一個文本編輯器中看到它。

您可能還會遇到非常大的文件太大而無法打開的情況。在這種情況下,您將不得不拆分文件以查看它們(如果您要創建自己的XML結構,則很可能需要創建自己的XML拆分器)。

相關問題