zoukankan      html  css  js  c++  java
  • XML中CDATA及其字符实体的使用

    在写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&lt;z/y>
    用字符实体&it;来替代"<"符号。
    在编写xml文档时,标签的属性中如果出现了字符问题,不能使用CDATA解决,只能用字符实体替代符号
    如:
    <x name='a"'c'></x><!--这段代码会出现问题-->
    可以将上面标签中的符号用字符实体替代。
    如下:<x name="a&quot;&apos;c"></x>
     
     
    /**
         * 
         * @Title: filterXmlChar
        
         * @Description: TODO(解决 '<' 和 '&' 特殊字符的问题)
        
         * @param str
         * @return String
         */
        private static String filterXmlChar(String str) {
            String retstr = "";
            if (notEmpty(str)) {
                retstr = str.replaceAll("<", "&lt;")
                            .replaceAll(">", "&gt;")
                            .replaceAll("&", "&amp;")
                            .replaceAll("'", "&apos;")
                            .replaceAll(""", "&quot;");
            }
            return retstr;
        }    
  • 相关阅读:
    Jenkins获取运行job的用户名(在构建历史中展示构建人)
    Android -tool工具UIautomatorviewer提示“不能让屏幕黑屏”
    转: 谈谈关于内存的一些心得体会
    IP地址,子网掩码划分(转)
    重定向子进程控制台程序的输入输出
    正则表达式(1)
    Log4Net使用指南(转)
    使用wireshark抓本机之间的包(转)
    VirtualBox开发环境的搭建详解(转)
    SxsTrace工具使用方法(转)
  • 原文地址:https://www.cnblogs.com/o-andy-o/p/3586159.html
Copyright © 2011-2022 走看看