您的位置:首页 > 其它

XML中CDATA及其字符实体的使用

2017-06-02 23:49 274 查看
在写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>
 
但是如果程序像下面这样,
<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;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐