gpt4 book ai didi

c# - 在将字符串加载到 XML 文档对象之前删除所有十六进制字符?

转载 作者:可可西里 更新时间:2023-11-01 08:34:40 25 4
gpt4 key购买 nike

我有一个正在发布到服务器上的 ashx 处理程序的 xml 字符串。 xml 字符串是在客户端构建的,基于表单上的几个不同条目。偶尔一些用户会从其他来源复制并粘贴到网络表单中。当我尝试使用 xmldoc.LoadXml(xmlStr) 将 xml 字符串加载到 XMLDocument 对象时,出现以下异常:

System.Xml.XmlException = {"'', hexadecimal value 0x0B, is an invalid character. Line 2, position 1."}

在 Debug模式下,我可以看到流氓角色(抱歉,我不确定它的官方名称?):

我的问题是在尝试将 xml 字符串加载到 XMLDocument 对象之前如何清理它?我是否需要一个自定义函数来逐一解析所有这些类型的字符,或者我是否可以使用一些 native .NET4 类来删除它们?

Rogue character in debug mode

最佳答案

这里有一个使用 Regex 清除 xml 无效字符的示例:

 xmlString = CleanInvalidXmlChars(xmlString);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlString);

public static string CleanInvalidXmlChars(string text)
{
string re = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]";
return Regex.Replace(text, re, "");
}

关于c# - 在将字符串加载到 XML 文档对象之前删除所有十六进制字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19399075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com