在写xml文档时,偶尔会用到一些特殊字符,如<、>、&等,如下面这段程序:
<?xml version="1.0"?>
<y>if x<z</y>
在标签<y></y>中不能出现“<”字符。否则会报错,
有两种方式可以解决此问题
一是用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>
用字符实体⁢来替代"<"符号。
如:
<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; }