XDocument.ToString() 抛出“' ', 十六进制值 0x13, 是无效的字符。”异常

3
我想将XDocument存储到SQLXML数据类型中。我阅读了这个链接,以将XDOcument存储到SQL数据库中。根据该链接,在转换XDocumentObj.ToString()时,它会抛出"' ', hexadecimal value 0x13, is an invalid character."异常。请问有谁可以帮我解决问题?我如何将完整的XML文件存储到类型为XML的数据库中。
1个回答

2
一些字符在其中包含了U+0013,这是一个控制字符,用于暂停串行数据链路的传输。你不太可能真正需要它,所以真正的问题不是有一个在XML中无效的字符,而是有一个根本不应该出现的字符。因此,找出它是如何进入的,这才是真正的错误。我建议从捕获添加到文档的任何调用开始,并在发现包含U+0013的字符串时引发异常。

我们是否有任何逻辑或概念或预定义机制可以找到它们并忽略所有无效字符? - SharpUrBrain
1
你可以把它们全部替换为空。我强烈建议不要这样做,除非你知道它们为什么会出现在那里;这就像因为疼痛而吞下止痛药,而不是去看医生并弄清楚自己是否有轻微的感染可以清除或一级癌症,如果不治疗就会致命。 - Jon Hanna
1
呃!这是XML1.1吗?如果是1.0,你可能会遇到更多问题,因为如果有人向你发送无效的XML(包含U+0013的XML1.0不是有效的),如果你尝试使用XML工具处理它,很多赌注都会失效。使用XML1.1时,你不能直接使用该字符,但可以使用转义符(如果他们使用的码点是非字符或未配对代理项,或任意不可解码的字节,则即使使用转义符也无法正常工作,因为它甚至不是有效的文本)。我不知道XDocument对XML1.1的支持情况如何。无论如何,这不是一个有效的XML1.0文档,我需要知道... - Jon Hanna
关于这个文档的详细信息以及你需要保留哪些内容来清楚地了解如何处理它,我想你应该更多地了解一下。如果替换方法可行的话,你可能会希望在将其加载到XDocument之前进行操作。 - Jon Hanna
XDocument声明指定了xml version="1.0" encoding="utf-8"和standalone="yes"。现在我的目标是将整个XDocument内容按原样存储到SQL数据库中,然后我将从数据库中检索它,并仅获取我模块所需的信息。如果有其他替代选项或方法也可以。 - SharpUrBrain
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接