zoukankan      html  css  js  c++  java
  • XML hexadecimal value 0x__, is an invalid character

    XML操作时异常:(十六进制值 0x__) 是无效的字符。

    方法一:

    设置 CheckCharacters=false。

    XmlReaderSettings xmlReaderSettings = new XmlReaderSettings { CheckCharacters = false };

    方法二:

    如果在第三方类库中,无法设置CheckCharacters ,那么只能移除无效的字符。 google下都是使用正则来移除,其实应该使用高效的位图算法。

     类的静态方法:

    
    
    static bool[] XMLInvalidCharMap = new bool[128];
    //[x00-x08x0Bx0Cx0E-x1Fx26] 
    for (int i = 0x00; i <= 0x08; i++)
    {
        XMLInvalidCharMap[i] = true;
    }
    XMLInvalidCharMap[0x0b] = true;
    XMLInvalidCharMap[0x0c] = true;
    for (int i = 0x0e; i <= 0x1f; i++)
    {
        XMLInvalidCharMap[i] = true;
    }
    //XMLInvalidCharMap[0x26] = true; //&符号,不应该被过滤

     使用方法:

           static string ReplaceHexadecimalSymbols(string txt)
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < txt.Length; i++)
                {
                    if (txt[i] < 128 && XMLInvalidCharMap[txt[i]])
                    {
                        continue;
                    }
                    sb.Append(txt[i]);
                }
                return sb.ToString();
                /*
                string r = "[x00-x08x0Bx0Cx0E-x1Fx26]";
                return Regex.Replace(txt, r, "", RegexOptions.Compiled);*/
            }

    http://stackoverflow.com/questions/21053138/c-sharp-hexadecimal-value-0x12-is-an-invalid-character

    https://seattlesoftware.wordpress.com/2008/09/11/hexadecimal-value-0-is-an-invalid-character/

  • 相关阅读:
    SVN 使用教程
    MVC图片上传压缩
    MVC 上传下载压缩
    C# WinForm生成二维码,一维码,条形码 操作
    C#MVC生成二维码
    ajax post方式提交到.net core api
    .net core多文件上传 日志记录
    C# .net Core 文件上传
    C#.netmvc单文件上传 ajax上传文件
    详细的sql语句
  • 原文地址:https://www.cnblogs.com/yczz/p/5139089.html
Copyright © 2011-2022 走看看