惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
博客园 - 叶小钗
A
About on SuperTechFans
Last Week in AI
Last Week in AI
量子位
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
T
The Blog of Author Tim Ferriss
Vercel News
Vercel News
博客园 - 司徒正美
博客园 - Franky
博客园 - 【当耐特】
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
J
Java Code Geeks

博客园 - 花生!~~

[技术分享] 谈谈网页数据采集中的“结构化”难题:从手动 XPath 到智能识别算法的演进 windows10 .NET http请求 tls1.3问题 微信历史版本下archive Cefsharp开发相关注意 .net PostgreSQL 相关 .net4.0 请求HTTPS出错:未能创建 SSL/TLS 安全通道 c#中的gcAllowVeryLargeObjects和OutOfMemoryException 创建窗口句柄时出错(error creating window handle) .net程序和管理员权限的一些事 - 花生!~~ - 博客园 .net下WinDbg使用说明 在.net中修改Webbrowser控件的IE版本 System.Data.SQLite安装的相关问题 TextBox Ctrl+A不能全选的问题 HttpWebRequest 跳转后(301,302)ResponseUri乱码问题 如何用c#本地代码实现与Webbrowser中的JavaScript交互 在sqlite中,如何删除字段? how to drop a column in sqlite 如何在centos下配置redis开机自启动 WinForm中的图表控件Chart XPath高级用法(冰山一角)
XML hexadecimal value 0x__, is an invalid character
花生!~~ · 2016-01-18 · via 博客园 - 花生!~~

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

方法一:

设置 CheckCharacters=false。

XmlReaderSettings xmlReaderSettings = new XmlReaderSettings { CheckCharacters = false };

方法二:

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

 类的静态方法:


static bool[] XMLInvalidCharMap = new bool[128];
//[\x00-\x08\x0B\x0C\x0E-\x1F\x26] 
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-\x08\x0B\x0C\x0E-\x1F\x26]";
            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/