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>
<?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; }
相关文章推荐
- XML中CDATA及其字符实体的使用
- XML中的五个保留字符及其实体引用
- 使用实体引用和CDATA标记来显示XML的特殊符号
- xml特殊字符处理的两种方式:实体引用和CDATA
- XML 标记使用的特殊字符对应内置实体
- 在string中。。。。全名:characterdata在标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待,C
- asp.net webapi 序列化为xml 时实体属性增加<![CDATA[]]>防止特殊字符
- asp.net webapi 序列化为xml 时实体属性增加<![CDATA[]]>防止特殊字符
- xml中的一些字符对应实体
- Spring.Net+NHibernate 不再使用 XML 描述实体关系
- XML特殊字符和实体引用
- xml CDATA区、特殊字符:<= 小于等于、>= 大于等于
- 使用AJAX传XML数据的时候,需要将某些XML字符转义
- HTML字符实体(CharacterEntities),转义字符串(Escape Sequence),web.config中使用特殊字符
- 使用DTD文档对 xml 1 作业中的xml文档进行约束,其中河北省只能依次包含石家庄市、张家口市、保定市这三个市,保定市可以有多个或者1个,给保定市定义属性编号为ID类型,必须有;属性name为字符
- 03-07 创建和编辑AutoCAD实体(七) 向图形中添加文字(4)使用Unicode字符及其他...
- 在xml中使用&和字符
- Xml CData的使用 获取原始的节点内容
- XML字符的实体2--MSDN
- 不合法的XML字符必须被替换为相应的实体 [Asp.net HTML XML]