急!c# xml文件流 反序列化错误

CodesDream 2019-01-03 09:01:32
FileInfo fi = new FileInfo(xmlPATH);
Stream s =fi.Open(FileMode.Open, FileAccess.Read, FileShare.Read);
BinFormatter.Deserialize(s);


在BinFormatter.Deserialize(s);这一句出现异常
Message "输入流是无效的二进制格式。开始内容(以字节为单位)是: 73-22-3F-3E-0D-0A-3C-50-61-74-72-6F-6C-4D-6F-64-65..."

StackTrace " 在 System.Runtime.Serialization.Formatters.Binary.SerializationHeaderRecord.Read(__BinaryParser input)\r\n 在 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadSerializationHeaderRecord()\r\n 在 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()\r\n 在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)\r\n 在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)\r\n 在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)"
...全文
199 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodesDream 2019-01-21
  • 打赏
  • 举报
回复
xmlPATH 指 xml文件路径

xml文件内容如下

<?xml version="1.0" encoding="utf-8"?>
<xxx配置>
<导出时间>2019-01-01 12:00:00</导出时间>
<XXXA信息>
<ID>1001</ID>
<名称>名称1</名称>
<Description />
</XXXA信息>
<XXXB信息>
<ID>21</ID>
<Size>3</Size>
</XXXB信息>
</xxx配置>

节点有中文也有英文
xuzuning 2019-01-07
  • 打赏
  • 举报
回复
至少需要知道 xmlPATH 里面是什么
CodesDream 2019-01-07
  • 打赏
  • 举报
回复
有没有人能说明一下这段代码的问题? 是代码写的不正确还是有需要注意的点?
  • 打赏
  • 举报
回复
xml序列化 你用BinaryFormatter?
  • 打赏
  • 举报
回复
xml 文件是指文本文件,里边是普通字符串(例如通常用 unicode 编码保存的文本)。你需要读取文本,并且按照 xml 对应对象的方式反序列化。
  • 打赏
  • 举报
回复
xml文件?那么跟 BinFormatter 有什么关系呢?
CodesDream 2019-01-04
  • 打赏
  • 举报
回复
引用 6 楼 以专业开发人员为伍 的回复:
[quote=引用 4 楼 CodesDream 的回复:]
[quote=引用 2 楼 以专业开发人员为伍 的回复:]
xml 文件是指文本文件,里边是普通字符串(例如通常用 unicode 编码保存的文本)。你需要读取文本,并且按照 xml 对应对象的方式反序列化。


把xml文件转成流 把流反序列化[/quote]

不论什么内容,写到文件里都是“二级制流”。但是二进制反序列化不是说抠“流”这个字眼儿而编程,而是要求当初写入的内容本身就是二进制序列化的内容,才能用二进制反序列化来恢复。对于 xml 也是一样,当初用 xml 序列化方式得到的文本 string 写到文本文件,就得用对应的方式反序列化。

编程的理由(知识)不是抠“流”这个词儿,而是理解原理。[/quote]

本人技术不好,而且修改的是别人的代码,对于代码和bug的理解不清晰,现在出现这个问题,找不到方向和思路 ,希望各位大神指引一下
xuzuning 2019-01-04
  • 打赏
  • 举报
回复
引用 5 楼 CodesDream 的回复:
[quote=引用 3 楼 娃都会打酱油了 的回复:]
xml序列化
你用BinaryFormatter?


对 用的BinaryFormatter[/quote]张冠李戴了,还对的
二进制序列化有其固有的格式,绝非 XML 可以表示的
对于 XML 文档,你至多能用 XmlSerializer 反序列化
  • 打赏
  • 举报
回复
“把xml文件转成流”这里就是没有原理支持的张冠李戴了。
  • 打赏
  • 举报
回复
引用 4 楼 CodesDream 的回复:
[quote=引用 2 楼 以专业开发人员为伍 的回复:] xml 文件是指文本文件,里边是普通字符串(例如通常用 unicode 编码保存的文本)。你需要读取文本,并且按照 xml 对应对象的方式反序列化。
把xml文件转成流 把流反序列化[/quote] 不论什么内容,写到文件里都是“二级制流”。但是二进制反序列化不是说抠“流”这个字眼儿而编程,而是要求当初写入的内容本身就是二进制序列化的内容,才能用二进制反序列化来恢复。对于 xml 也是一样,当初用 xml 序列化方式得到的文本 string 写到文本文件,就得用对应的方式反序列化。 编程的理由(知识)不是抠“流”这个词儿,而是理解原理。
CodesDream 2019-01-04
  • 打赏
  • 举报
回复
引用 3 楼 娃都会打酱油了 的回复:
xml序列化
你用BinaryFormatter?


对 用的BinaryFormatter
CodesDream 2019-01-04
  • 打赏
  • 举报
回复
引用 2 楼 以专业开发人员为伍 的回复:
xml 文件是指文本文件,里边是普通字符串(例如通常用 unicode 编码保存的文本)。你需要读取文本,并且按照 xml 对应对象的方式反序列化。


把xml文件转成流 把流反序列化

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧