最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# XML字符串包含特殊字符的處理轉換方法小結

 更新時間:2020年07月01日 12:39:51   作者:webkaka  
今天用C#輸出XML文件時,發(fā)現報錯,經過反復檢查調試,發(fā)現是因為某處內容含有某些特殊字符,這些特殊字符是在XML里不被允許的

為了能正常輸出XML格式的內容,必須要對不被XML允許的那些特殊字符進行轉換。本文介紹的正是如何使用C#判斷XML字符串是否含特殊字符并進行轉換。

以下是幾個特殊字符的對應實體。

<

小于號

>

大于號

&

&

'

'

單引號

"

"

雙引號

在C#中,直接調用C#提供的方法,保存之后就會自動將特殊字符轉為對應實體:

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

或者

將內容放在<![CDATA[ ]]>中,例如<![CDATA[2]]> ,CDATA里面的內容在XmlDocument 解析時會自動忽略掉

如果是很多有區(qū)域都有特殊內容,可以參考下面的代碼通過函數來實現替換。

其實挺簡單,只需用下面的這個函數,即可判斷及轉換XML字符串里的特殊字符。

核心代碼

/// <summary>
/// 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.
/// </summary>
/// <param name="text">Plain text to convert to XML Encoded string</param>
/// <param name="isAttribute">
/// 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.
/// </param>
/// <returns>XML encoded string</returns>
/// <exception cref="InvalidOperationException">Invalid character in XML string</exception>
public static string XmlString(string text, bool isAttribute = false)
{
 var sb = new StringBuilder(text.Length);

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

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

  // Legal sub-chr32 characters
  else if (chr == '\n')
   sb.Append(isAttribute ? "&#xA;" : "\n");
  else if (chr == '\r')
   sb.Append(isAttribute ? "&#xD;" : "\r");
  else if (chr == '\t')
   sb.Append(isAttribute ? "&#x9;" : "\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文件,就不會再有問題了。

相關文章

  • C#實現文件Move和Copy操作

    C#實現文件Move和Copy操作

    這篇文章介紹了C#實現文件Move和Copy操作的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#操作JSON(序列化與反序列化)的方法詳解

    C#操作JSON(序列化與反序列化)的方法詳解

    .net?core提供了Json處理模塊,在命名空間System.Text.Json中,本文將通過頂級語句,對C#的Json功能進行講解,感興趣的小伙伴可以了解一下
    2023-05-05
  • Unity3D選擇本地圖片并加載

    Unity3D選擇本地圖片并加載

    這篇文章主要為大家詳細介紹了Unity3D選擇本地圖片并加載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 輕松學習C#的foreach迭代語句

    輕松學習C#的foreach迭代語句

    輕松學習C#的foreach迭代語句,  C#語言提供了一個for語句循環(huán)的捷徑,而且還促進了集合類的更為一致,就是本文提到的foreach語句,感興趣的小伙伴們可以參考一下
    2015-11-11
  • TortoiseSVN使用教程

    TortoiseSVN使用教程

    TortoiseSVN 是 Subversion 版本控制系統(tǒng)的一個免費開源客戶端,可以超越時間的管理文件和目錄。本文給大家介紹TortoiseSVN使用教程,對tortoisesvn使用相關知識感興趣的朋友一起學習吧
    2015-12-12
  • C#將Excel轉成PDF的方法

    C#將Excel轉成PDF的方法

    今天小編就為大家分享一篇關于C#將Excel轉成PDF的方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C# 如何使用OpcUaHelper讀寫OPC服務器

    C# 如何使用OpcUaHelper讀寫OPC服務器

    這篇文章給大家介紹C# 如何使用OpcUaHelper讀寫OPC服務器,本文通過圖文實例代碼相結合給大家介紹的非常詳細,需要的朋友參考下吧
    2023-12-12
  • 詳解C# 網絡編程系列:實現類似QQ的即時通信程序

    詳解C# 網絡編程系列:實現類似QQ的即時通信程序

    本篇主要介紹了c#實現類似QQ的即時通信程序 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • C#實現將字符串轉換成日期格式的方法

    C#實現將字符串轉換成日期格式的方法

    這篇文章主要介紹了C#實現將字符串轉換成日期格式的方法,涉及C#操作時間及字符串的相關技巧,非常簡單實用,需要的朋友可以參考下
    2015-05-05
  • C#中Abstract方法和Virtual方法的區(qū)別

    C#中Abstract方法和Virtual方法的區(qū)別

    這篇文章介紹了C#中Abstract方法和Virtual方法的區(qū)別,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04

最新評論

明溪县| 亚东县| 尚义县| 礼泉县| 正镶白旗| 新津县| 新源县| 天镇县| 于田县| 沁水县| 喀什市| 孙吴县| 当涂县| 珲春市| 罗山县| 通州区| 文昌市| 常州市| 临沧市| 唐山市| 资中县| 基隆市| 故城县| 梁山县| 慈利县| 扬中市| 光山县| 平遥县| 墨竹工卡县| 四平市| 界首市| 博野县| 玉田县| 年辖:市辖区| 田阳县| 杭锦后旗| 永昌县| 万宁市| 泽州县| 遵义市| 浑源县|