栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C# XML字符串包含特殊字符的处理转换方法小结

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# XML字符串包含特殊字符的处理转换方法小结

为了能正常输出XML格式的内容,必须要对不被XML允许的那些特殊字符进行转换。本文介绍的正是如何使用C#判断XML字符串是否含特殊字符并进行转换。

以下是几个特殊字符的对应实体。

<

小于号

>

大于号

&

&

'

'

单引号

"

"

双引号

在C#中,直接调用C#提供的方法,保存之后就会自动将特殊字符转为对应实体:

string s =System.Security.SecurityElement.Escape(s);

或者

将内容放在中,例如 ,CDATA里面的内容在Xmldocument 解析时会自动忽略掉

如果是很多有区域都有特殊内容,可以参考下面的代码通过函数来实现替换。

其实挺简单,只需用下面的这个函数,即可判断及转换XML字符串里的特殊字符。

核心代码

/// 
/// Turns a string into a properly XML Encoded string.
/// Uses simple string replacement.
/// 
/// Also see XmlUtils.XmlString() which uses XElement
/// to handle additional extended characters.
/// 
/// Plain text to convert to XML Encoded string
/// 
/// If true encodes single and double quotes, CRLF and tabs.
/// When embedding element values quotes don't need to be encoded.
/// When embedding attributes quotes need to be encoded.
/// 
/// XML encoded string
/// Invalid character in XML string
public static string XmlString(string text, bool isAttribute = false)
{
 var sb = new StringBuilder(text.Length);

 foreach (var chr in text)
 {
  if (chr == '<')
   sb.Append("<");
  else if (chr == '>')
   sb.Append(">");
  else if (chr == '&')
   sb.Append("&");

  // special handling for quotes
  else if (isAttribute && chr == '"')
   sb.Append(""");
  else if (isAttribute && chr == ''')
   sb.Append("'");

  // Legal sub-chr32 characters
  else if (chr == 'n')
   sb.Append(isAttribute ? "
" : "n");
  else if (chr == 'r')
   sb.Append(isAttribute ? "
" : "r");
  else if (chr == 't')
   sb.Append(isAttribute ? "	" : "t");

  else
  {
   if (chr < 32)
    throw new InvalidOperationException("Invalid character in Xml String. Chr " +
      Convert.ToInt16(chr) + " is illegal.");
   sb.Append(chr);
  }
 }

 return sb.ToString();
}

被XML视为特殊字符的字符并不多,只有三个:<、&、>,因此只需把这三个字符进行转换即可,而对单双引号和换行符可转换也可不转换。

使用方法:

1、首先要导入命名空间System.Text;,因为要用到StringBuilder方法。

2、判断及转换字符串时直接使用函数XmlString(),如:

string sText = XmlString(sText);

如果要输出单双引号和换行符,那么要对这几个字符进行转义,则要这样使用函数:

string sText = XmlString(sText, true);

总结

通过上述方法的使用,在网页上输出XML格式字符串或者生成一个可用的XML文件,就不会再有问题了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/121998.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号