当前位置: 首页 > 编程语言 > C#

XDocument防止共享无效字符

时间:2023-04-10 17:27:11 C#

XDocument防止无效字符我正在使用XDocument来保存一种数据库。该数据库由已注册的聊天机器人组成,我只有许多具有“用户名”、“所有者”等属性的“机器人”节点。但是,每隔一段时间,一些聪明的人就会决定制造一个具有非常奇怪特征的机器人作为其特征之一属性。这使得XDocument系列类在读取该节点时抛出异常,这是一个非常大的问题,因为数据库无法完全保存,因为它一旦到达无效字符就会停止写入文件。我的问题是-是否有像XSomething.IsValidString(strings)这样的简单方法,所以我可以省略有问题的数据?我的数据库不是官方的,仅供个人使用,所以我不必包含不良数据。我正在使用的一些代码(可变文件是XDocument):保存:file.Save(Path.Combine(Environment.CurrentDirectory,"bots.xml"));加载(在检查File.Exists()等之后):file=XDocument.Load(Path.Combine(Environment.CurrentDirectory,"bots.xml"));添加到数据库(变量都是字符串):file.Root.Add(newXElement("bot",newXAttribute("username",botusername),newXAttribute("type",type),newXAttribute("botversion",botversion),newXAttribute("bdsversion",bdsversion),newXAttribute("owner",owner),newXAttribute("触发器",触发器)));请原谅我缺乏适当的XML技能,我才刚刚开始。我问的是是否有XSomething.IsValidString(strings)方法,而不是我的XML有多糟糕。好的,我刚刚得到异常,这是确切的消息和堆栈跟踪。System.ArgumentException:'',十六进制值0x07,是无效字符。在System.Xml.XmlUtf8RawTextWriter.InvalidXmlChar(Int32ch,字节*pDst,布尔实体化)在System.Xml.XmlUtf8RawTextWriter.WriteAttributeTextBlock(Char*pSrc,Char*pSrcEnd).Xml.XmlUtf8RawTextWriterIndent.WriteString(Stringtext)在System.Xml.XmlWellFormedWriter.WriteString(Stringtext)在System.Xml.XmlWriter.WriteAttributeString(Stringprefix,StringlocalName,Stringns,Stringvalue)在System.Xml.Linq。ElementWriter.WriteStartElement(XElemente)在System.Xml.Linq.ElementWriter.WriteElement(XElemente)在System.Xml.Linq.XElement.WriteTo(XmlWriter作者)在System.Xml.Linq.XContainer.WriteContentTo(XmlWriter作者)在System.Xml.Linq.XDocument.WriteTo(XmlWriter编写器)在System.Xml.Linq.XDocument.Save(字符串文件名,SaveOptions选项)在System.Xml.Linq.XDocument.Save(字符串文件名)在/*我的代码堆栈跟踪省略*/尝试更改文件。保存以下代码的行:XmlWriterSettingssettings=newXmlWriterSettings();settings.CheckCharacters=false;XmlWriterwriter=XmlWriter.Create(Path.Combine(Environment.CurrentDirectory,"bots.xml"),settings);文件.保存(作者);资料来源:http://sartorialsolutions.wordpress.com/page/2/首先,你能检查一下你的XML文件是否以正确的编码保存吗?我通常将xml文件保存为UTF8,你可以在xml标头中声明编码当然你的xml正文必须符合xml标准这里有一篇关于它的好文章http://weblogs.sqlteam.com/mladenp/archive/2008/10/21/Different-ways-how-to-escape-an-XML-string-in-C.aspx从.NET4开始,您可以使用XmlConvert.VerifyXmlChars(stringcontent)。如果不接受传递的字符串,这将引发异常。以上就是C#学习教程:XDocumentpreventsinvalidcharachters分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: