我收到一些带有嵌入 base64 编码图像的 xml 文件,我需要对其进行解码并保存为文件。
可以在下面下载此类文件的未修改(压缩除外)示例:
20091123-125320.zip (60KB)
但是,我收到诸如“Base-64 字符数组的长度无效”和“Base-64 字符串中的无效字符”之类的错误。我在代码中标记了代码中出现错误的行。
文件可能如下所示:
<?xml version="1.0" encoding="windows-1252"?>
<mediafiles>
<media media-type="image">
<media-reference mime-type="image/jpeg"/>
<media-object encoding="base64"><![CDATA[/9j/4AAQ[...snip...]P4Vm9zOR//Z=]]></media-object>
<media.caption>What up</media.caption>
</media>
</mediafiles>
和这样处理的代码:
var xd = new XmlDocument();
xd.Load(filename);
var nodes = xd.GetElementsByTagName("media");
foreach (XmlNode node in nodes)
{
var mediaObjectNode = node.SelectSingleNode("media-object");
//The line below is where the errors occur
byte[] imageBytes = Convert.FromBase64String(mediaObjectNode.InnerText);
//Do stuff with the bytearray to save the image
}
xml 数据来自企业报纸系统,所以我很确定文件没问题——而且我处理它们的方式一定有问题,那是错误的。也许编码有问题?
我试过写出 mediaObjectNode.InnerText 的内容,它是 base64 编码的数据 - 所以导航 xml-doc 不是问题。
我一直在谷歌搜索、搜索、stackoverflowing 和哭泣——但没有找到解决方案……救命!
编辑:
添加了一个实际的示例文件(和一个赏金)。请注意,可下载文件的架构略有不同,因为我在上面的示例中对其进行了简化,删除了不相关的内容......