最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

XML特殊字符处理

来源:动视网 责编:小OO 时间:2025-09-26 00:25:13
文档

XML特殊字符处理

xml中的特殊字符替换作者:Sky–=====================================/*Description:xml中的特殊字符替换ARGUMENT:p_number需要替换特殊字符的xml字符串RETURN:格式化处理后的字符串HISTORY:VesionDate(YYYY.MM.DD)Author1.002008.07.29RongjieZhang替换规则:空格  >>&&&"""‘'©(版权)©©®(注册)®®*××÷÷÷¥¥¥回车换行*/–=========
推荐度:
导读xml中的特殊字符替换作者:Sky–=====================================/*Description:xml中的特殊字符替换ARGUMENT:p_number需要替换特殊字符的xml字符串RETURN:格式化处理后的字符串HISTORY:VesionDate(YYYY.MM.DD)Author1.002008.07.29RongjieZhang替换规则:空格  >>&&&"""‘'©(版权)©©®(注册)®®*××÷÷÷¥¥¥回车换行*/–=========
xml中的特殊字符替换

作者:Sky 

–=====================================

/*

Description : xml中的特殊字符替换

ARGUMENT : p_number 需要替换特殊字符的xml字符串

RETURN : 格式化处理后的字符串

HISTORY :

Vesion Date(YYYY.MM.DD) Author

1.00 2008.07.29 Rongjie Zhang

替换规则:

空格    

> >

& & &

" " "

‘ '

©(版权) © ©

®(注册) ® ®

* × ×

÷ ÷ ÷

¥ ¥ ¥

回车换行 

*/ –====================================

FUNCTION XML_FORMAT(p_xml IN VARCHAR2) RETURN VARCHAR2 IS

BEGIN

RETURN REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(p_xml,

‘&’,

‘&;’),

‘’,

‘ >’),

‘"’,

‘"’),

‘ ‘,

‘ ’),

””,

‘'’);

END XML_FORMAT;

注意:由于需要,我只处理了常见的6种特殊字符.

PS:

不合法的XML字符必须被替换为相应的实体。 

如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:

if salary < 1000 then
为了避免出现这种情况,必须将字符"<" 转换成实体,象下面这样:

if salary < 1000 then
下面是五个在XML文档中预定义好的实体:

<小于号
>大于号
&&
''单引号
""双引号

实体必须以符号"&"开头,以符号";"结尾。 

注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。 

写个函数处理前进行替换 ,或者采集的时候就先处理掉这些特殊字符.

> 和 < 这类字符是XML 标记字符,在 XML 中有特殊的含义。当在 SQL 查询(或 XPath 查询)中指定这些字符时,必须对它们进行适当的编码(也称为实体编码)。下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见 XML 1.0 规范 中的 XML 1.0 规范。 

特殊字符 特殊含义 实体编码 

>           开始标记 > 

<           结束标记 < 

"            引号        " 

'             撇号       ' 

&           "&"符      &

XML 节点中不能包含这些特殊字符,“&”,“<”,“>”,不然解析时此XML会报错,使用时需要对它转换下

=====================================================

下面是一个很简单的过滤特殊字符的函数: 

    public string FilterSpecial(string str)//特殊字符过滤函数

    {

        if (str == "") //如果字符串为空,直接返回。

        {

            return str;

        }

        else

        {

            str = str.Replace("'", "");

            str = str.Replace("<", "");

            str = str.Replace(">", "");

            str = str.Replace("%", "");

            str = str.Replace("'delete", "");

            str = str.Replace("''", "");

            str = str.Replace("\\"\\"", "");

            str = str.Replace(

            str = str.Replace(".", "");

            str = str.Replace(">=", "");

            str = str.Replace("=<", "");

            str = str.Replace("-", "");

            str = str.Replace("_", "");

            str = str.Replace(";", "");

            str = str.Replace("||", "");

            str = str.Replace("[", "");

            str = str.Replace("]", "");

            str = str.Replace("&", "");

            str = str.Replace("/", "");

            str = str.Replace("-", "");

            str = str.Replace("|", "");

            str = str.Replace("?", "");

            str = str.Replace(">?", "");

            str = str.Replace("?<", "");

            str = str.Replace(" ", "");

            return str;

        }

    }

更高效率的办法

public string UrnHtml(string strHtml) 

string[] aryReg ={ "'", "<", ">", "%

for (int i = 0; i < aryReg.Length; i++) 

strHtml = strHtml.Replace(aryReg[i], string.Empty); 

return strHtml; 

}

================================

其中一项就是一个页面出现错误,不能正常显示,查看了一下原因,发现是公司名中的特殊字符&在作祟。原来xml中会自动转义<>&这些特殊字符,为了保证xml能显示这些特殊字符,必须将它们转为< > &

幸好,C#中本身提供了方法可以帮助我们轻松进行转换,只需要调用String System.Security.SecurityElement.Escape(String s)静态方法就可以了,OK,封装在我们自己的XmlHelper中,就成了我们自己的工具类啦:)

后来发现,为什么有一些xml我们没有对特殊字符进行转换,但是它却没有报错呢?原来使用了C#的System.Xml命名空间下的XmlTextWriter,它会自动为&这些特殊符号进行特殊字符转换,无需我们手工代劳了。

  FUNCTION replacespecialchar(ov_source VARCHAR2) RETURN VARCHAR2 IS

  BEGIN

    RETURN REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(ov_source,

                                                   '&',

                                                   '&' || 'amp;'),

                                           '<',

                                           '&' || 'lt;'),

                                   '>',

                                   '&' || 'gt;'),

                           '"',

                           '&' || 'quot;'),

                   '''',

                   '&' || 'apos;');

  END;

文档

XML特殊字符处理

xml中的特殊字符替换作者:Sky–=====================================/*Description:xml中的特殊字符替换ARGUMENT:p_number需要替换特殊字符的xml字符串RETURN:格式化处理后的字符串HISTORY:VesionDate(YYYY.MM.DD)Author1.002008.07.29RongjieZhang替换规则:空格  >>&&&"""‘'©(版权)©©®(注册)®®*××÷÷÷¥¥¥回车换行*/–=========
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top