C#過濾XML(十六進位值 0x1D)無效的字元

來源:互聯網
上載者:User

載入或儲存XML時引發的異常.System.ArgumentException: “”(十六進位值 0x1D)是無效的字元。
產生原因是xml檔案中包含低位非列印字元造成的
處理方法:在產生xml檔案的時候,過濾低位非列印字元

把一個字串中的 低序位 ASCII 字元 替換成 &#x  字元
轉換  ASCII  0 - 8  -> � -
轉換  ASCII 11 - 12 -> - 
轉換  ASCII 14 - 31 -> - [html]   view plain copy return System.Text.RegularExpressions.Regex.Replace(HttpUtility.HtmlEncode(str),@"[\x00-\x08]|[\x0B-\x0C]|[\x0E-\x1F]", "");  


  [csharp]   view plain copy /// <summary>   /// 把一個字串中的 低序位 ASCII 字元 替換成   字元   /// 轉換  ASCII  0 - 8  -> � -    /// 轉換  ASCII 11 - 12 ->   -     /// 轉換  ASCII 14 - 31 ->  -    /// </summary>   /// <param name="tmp"></param>   /// <returns></returns>   public static string ReplaceLowOrderASCIICharacters(string tmp)   {       StringBuilder info = new StringBuilder();       foreach (char cc in tmp)       {           int ss = (int)cc;           if (((ss >= 0) && (ss <= 8)) || ((ss >= 11) && (ss <= 12)) || ((ss >= 14) && (ss <= 32)))               info.AppendFormat("{0:X};", ss);           else info.Append(cc);       }       return info.ToString();   }   /// <summary>   /// 把一個字串中的下列字元替換成 低序位 ASCII 字元   /// 轉換  � -   -> ASCII  0 - 8   /// 轉換    -    -> ASCII 11 - 12   /// 轉換   -  -> ASCII 14 - 31   /// </summary>   /// <param name="input"></param>   /// <returns></returns>   public static string GetLowOrderASCIICharacters(string input)   {       if (string.IsNullOrEmpty(input)) return string.Empty;       int pos, startIndex = 0, len = input.Length;       if (len <= 4) return input;       StringBuilder result = new StringBuilder();       while ((pos = input.IndexOf("", startIndex)) >= 0)       {           bool needReplace = false;           string rOldV = string.Empty, rNewV = string.Empty;           int le = (len - pos < 6) ? len - pos : 6;           int p = input.IndexOf(";", pos, le);  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.