【发布时间】:2016-09-21 13:24:34
【问题描述】:
我已经搜索了很多,无法找到解决方案,无法确定正确的方法
我正在将一个对象序列化为 xml 字符串并使用 c# 将其反序列化回一个对象。序列化后的 XML 字符串添加一个前导 ?。当我将其反序列化回对象时出现错误 XML 文档中存在错误 (1, 1)
?<?xml version="1.0" encoding="utf-16"?>
序列化代码:
string xmlString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(T));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("abc", "http://example.com/abc/");
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream,Encoding.Unicode);
xs.Serialize(xmlTextWriter, obj, ns);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
xmlString = ConvertByteArrayToString(memoryStream.ToArray());
ConvertByteArrayToString:
UnicodeEncoding encoding = new UnicodeEncoding();
string constructedString = encoding.GetString(characters);
反序列化代码:
XmlSerializer ser = new XmlSerializer(typeof(T));
StringReader stringReader = new StringReader(xml);
XmlTextReader xmlReader = new XmlTextReader(stringReader);
object obj = ser.Deserialize(xmlReader);
xmlReader.Close();
stringReader.Close();
return (T)obj;
我想知道我在编码方面做错了什么,我需要一个适用于大多数情况的解决方案。谢谢
【问题讨论】:
标签: c# xml xml-serialization xml-deserialization