所以,这个例子来自MSDN。 http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.readelementcontentasbase64.aspx 几乎我唯一改变的是创建一个循环,因为我有一个xmlstring并想要分解它并从它创建tif文件(实际上它确实这样做)。
我的问题是:while循环中的readbytes在最后一次通过循环引发异常,说明我有一个“意外的文件结尾;以下元素没有关闭”并列出它们
Public Shared Sub Base64DecodeImageFile()
Dim buffer(999) As Byte
Dim readBytes As Integer = 0
Using reader As XmlReader = XmlReader.Create(xmlstring)
Dim outputFile As New FileStream("C:\artFiles\data\newImage.jpg", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write)
' Read to the image element.
reader.ReadToFollowing("image")
' Read the Base64 data.
Console.WriteLine(vbCr + vbLf + "Reading Base64...")
Dim bw As New BinaryWriter(outputFile)
readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
While (readBytes > 0)
bw.Write(buffer, 0, readBytes)
readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
End While
outputFile.Close()
End Using
End Sub 'Base64DecodeImageFile
所以在readtofollowing(“image”)之后还有标签保持打开状态。我尝试捕获异常无济于事,试图阅读直到eof,无济于事。我真的不需要关闭元素,我只需要继续,因为我使用图像标记中的whats创建文件。
我感谢任何帮助!
编辑:我认为我的xmlstring会有太大的时间来进行解析而不会减慢太多... /解析二进制数据?
答案 0 :(得分:0)
嘛!我发现了我的问题..我想我会发布答案,或许可以帮助其他人?问题并不在于读者,事实上,它的效果非常好。问题是xmlstring本身。字符串从未创建我需要的结束标记(这将发生在最后一个循环中) 无论如何,谢谢你的帮助!