2012-09-05 68 views
0

我從rss-feed中讀取CDATA部分的元素,我需要將其轉換爲有效的xml。 CDATA部分中的內容大部分都是有效的xhtml,但有些時候像&符號這樣的字符出現在屬性(url)中。轉義java中的xml字符串

我可以使用.replaceAll("&", "&")來解決這個問題,但考慮一下,可能會出現其他無效字符出現在屬性或文本中。

我正在導入元素的CMS不會接受CDATA節而不設置內容的其他配置,所以我的問題是:是否有任何簡單的方法來轉義字符串,僅用於屬性和文本?

我使用jdom庫來處理導入後的xml。

編輯:我檢查了Apache的StringEscapeUtils,但這是逃避整個字符串。我需要的東西只能轉義屬性值和元素內的文本。

+0

'.replaceAll( 「&」, 「&」)'會搞亂任​​何現有的HTML實體。例如。 '<'會變成'& lt;'。 –

+0

看到此鏈接 http://stackoverflow.com/questions/599634/convert-html-character-back-to-text-using-java-standard-library –

+0

這是真的爲好,鄧肯。該StringEscapeUtils將轉義整個字符串,並不完全是我正在尋找。 – Karine

回答

0

當您使用JDOM它會自動正確逃生需要它唉內容。您的CMS是否加載了JDOM的輸出,或者您是否使用其他庫來填充CMS ...?從本質上講,如果你有有效的XML輸入,並且你使用JDOM(來自org.jdom2.output。*的東西)來輸出數據,那麼你將總是有很好的輸出....所以,你是什麼做破產?

羅爾夫

+0

CMS加載JDOM的輸出。問題是我並不總是有一個有效的輸入到SaxBuilder,因爲一些屬性值可能包含未轉義的&符號。 – Karine

+0

...在這種情況下,JDOM將解碼這些轉義字符(或您的SAX解析器),並且您在JDOM中看到的內容將不轉義,並且在輸出時將被重新轉義。 – rolfl

+0

不知道我是否跟着你。 JDOM SaxBuilder不會接受無效的(未轉義的&符號)XML字符串。 – Karine