使用 xmlDocument.Load() 方法加载 xml 文件时出现以下错误:
我收到此错误是因为我的 XML 中有一些无效字符“ETB”。我怎样才能解决这个问题?该字符是二进制编码图像数据的一部分。
<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>
Base 64 二进制数据是这样的:
iVBORw0KGgoAAAANSUhEUgAABAAAAAEaCAIAAAAACrKOAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOvwAADr8BOAVTJAAAaz9JREFUeF7tnQVgE03Tx8ODu7u7u7v7i7trcS0Ul+Luxd2Ke7FSrEix4oWixZ3iFErlnd1NLqlQ0sbukv+938eTnOzO/HavmdmdnY0WHByswgECIAACIAACIAACIAACIGAjBMgBwAECIAACIAACIAACIAACIGAjBFQ2oifUBAEQAAEQAAEQAAEQAAEQYOE/oAACIAACIAACIAACIAACIGA7BOAA2E5bQ1MQAAEQAAEQAAEQAAEQwAwA+gAIgAAIgAAIgAAIgAAI2BIBzADYUmtDVxAAARAAARAAARAAAZsnAAfA5rsAAIAACIAACIAACIAACNgSAeU5AEFRaZ4oPfSPikKVaYoqoqIqnpEBAXQGyzZCYJjqw56xrIS...
此数据中有一个“ETB”字符。
最佳答案
This character is a part of binary encoded image data.
那么它不应该在 XML 文档中。 XML 文档是文本 - 通常,如果您想包含任意二进制数据,您可以对其进行 base64 编码。
这实际上不是 C# 问题或 .NET 问题 - 这只是您的 XML 文档无效。
关于c# - XMLDocument.Load(),十六进制值0x17,为无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17940283/