C# XMLDocument.Load()的十六进制值0x17是无效字符

C# XMLDocument.Load()的十六进制值0x17是无效字符,c#,xmldocument,C#,Xmldocument,使用xmlDocument.Load()方法加载xml文件时出现以下错误: 我得到这个错误是因为我的XML中有一些无效字符“ETB”。我怎样才能解决这个问题?此字符是二进制编码图像数据的一部分 编辑: (包含“ETB”文本的Base 64编码数据) ]]> Base 64二进制数据如下所示: Ivborw0Kggoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

使用xmlDocument.Load()方法加载xml文件时出现以下错误:

我得到这个错误是因为我的XML中有一些无效字符“ETB”。我怎样才能解决这个问题?此字符是二进制编码图像数据的一部分

编辑:

(包含“ETB”文本的Base 64编码数据)
]]>
Base 64二进制数据如下所示:

Ivborw0KggoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEqaeqaeqaeqaeqaeqaeqaeqaeqaeqaeqaeqaeqaeqawawa+gaigaigaigaigaigai2bibzadyumtdvxaaaraaaraaaraaaraaazsnaafaraaacaccngsaeu5aefraz4opfspikvayqeqenpebaxyzzcyjqw56xris

此数据中间有“ETB”

此字符是二进制编码图像数据的一部分

那么它就不应该在XML文档中。XML文档是文本—通常,如果希望包含任意二进制数据,则需要对其进行base64编码

这实际上不是一个C#问题或.NET问题,只是您的XML文档无效

此字符是二进制编码图像数据的一部分

那么它就不应该在XML文档中。XML文档是文本—通常,如果希望包含任意二进制数据,则需要对其进行base64编码


这实际上不是一个C#问题或.NET问题,只是您的XML文档无效。

我的XML具有base64格式的图像。该节点类似于
我的xml文档有base64编码的数据,但我仍然得到了“ETB”字符。有没有什么方法可以在不接触xml的情况下使用C代码进行修复?@Jaguar:没有。这是无效的xml。这个字符不应该出现在base64编码的数据中。你确定这就是问题所在吗?我建议您在十六进制编辑器中查看文档,并尝试查找该字节。是的,我确信错误与该字符有关。编码数据在CDATA中。我以为CDATA中的所有内容都会被xmlDoc.load()忽略?@Jaguar:不,它仍然需要是有效的字符数据。我相信这个角色也有错误,但我不相信你认为它是错的。您应该编辑您的问题,以准确显示它在文档中的位置。“我的XML”具有base64格式的图像。该节点类似于
我的xml文档有base64编码的数据,但我仍然得到了“ETB”字符。有没有什么方法可以在不接触xml的情况下使用C代码进行修复?@Jaguar:没有。这是无效的xml。这个字符不应该出现在base64编码的数据中。你确定这就是问题所在吗?我建议您在十六进制编辑器中查看文档,并尝试查找该字节。是的,我确信错误与该字符有关。编码数据在CDATA中。我以为CDATA中的所有内容都会被xmlDoc.load()忽略?@Jaguar:不,它仍然需要是有效的字符数据。我相信这个角色也有错误,但我不相信你认为它是错的。您应该编辑您的问题,以显示它在文档中的确切位置。介于什么之间?目前还不清楚无效字符来自何处…@JonSkeet请检查文件中是否有完整的二进制数据,这根本不是有效的base64数据。除了有问题的字符外,它还包含非ASCII字符。我们仍然不知道数据来自哪里,但它不是有效的base64。介于什么之间?目前还不清楚无效字符来自何处…@JonSkeet请检查文件中是否有完整的二进制数据,这根本不是有效的base64数据。除了有问题的字符外,它还包含非ASCII字符。我们仍然不知道数据来自哪里,但它不是有效的base64。
<prompt>
   <![CDATA[<FlowDocument xmlns="http://schemas.microsoft.com/something"><Paragraph xmlns="http://schemas.microsoft.com/something"><InlineUIContainer BaselineAlignment="Center">
        <Image Stretch="None" Width="1024" Height="282"><Image.Source><BitmapImage><base64Binary>(Base 64 encoded data containing 'ETB' Text)
   </base64Binary></BitmapImage></Image.Source></Image></InlineUIContainer></Paragraph></FlowDocument>]]>
</prompt>