在寫xml文檔時,偶爾會用到一些特殊字符,如<、>、&等,如下面這段程序:
<?xml version="1.0"?>
<y>if x<z</y>
在標簽<y></y>中不能出現“<”字符。否則會報錯,
有兩種方式可以解決此問題
一是用CDATA
先看一下CDATA的用法,如下所示就可以解決上面出現的問題。
<y><![CDATA[if x<z]]></y>
<FirstMenu>
<MenuName> <![CDATA[<掃描設置> ]]></MenuName>
<MenuImage>crawl.gif</MenuImage>
<MenuFocusImage>crawlf.gif</MenuFocusImage>
<Href>../../dbconfig/dbresource_list.action</Href>
<Target>mainFrame</Target>
<UrlFlag>01</UrlFlag>
</FirstMenu>
<MenuName> <![CDATA[<掃描設置> ]]></MenuName>
<MenuImage>crawl.gif</MenuImage>
<MenuFocusImage>crawlf.gif</MenuFocusImage>
<Href>../../dbconfig/dbresource_list.action</Href>
<Target>mainFrame</Target>
<UrlFlag>01</UrlFlag>
</FirstMenu>
但是如果程序像下面這樣,
<y>
<![CDATA[if x<z ]]>]]></y>
會報錯,切記在一個CDATA中不能出現"]]>"字符串。
如果必須輸入
"]]>"字符串的話可以按下面這樣解決,將此字符串分為兩部分。
<y>
<![CDATA[if x<z ]]]]>
<![CDATA[>]]>
</y>
二是用字符實體
當然也可以用字符實體來替代符號解決前面的問題
比如:
<y>if x
<
z/y>
用字符實體⁢來替代"<"符號。
在編寫xml文檔時,
標簽的屬性中如果出現了字符問題,不能使用CDATA解決,只能用字符實體替代符號。
如:
<x name='a"'c'></x><!--這段代碼會出現問題-->
可以將上面標簽中的符號用字符實體替代。
如下:<x name="a"'c"></x>
/** * * @Title: filterXmlChar * @Description: TODO(解決 '<' 和 '&' 特殊字符的問題) * @param str * @return String */ private static String filterXmlChar(String str) { String retstr = ""; if (notEmpty(str)) { retstr = str.replaceAll("<", "<") .replaceAll(">", ">") .replaceAll("&", "&") .replaceAll("'", "'") .replaceAll("\"", """); } return retstr; }