1

使用 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”字符。

4

1 回答 1

7

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

那么它不应该在 XML 文档中。XML 文档是文本- 通常如果您想包含任意二进制数据,您可以对其进行 base64 编码。

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

于 2013-07-30T07:00:52.373 回答