我正在写一个xml
文件但是缺少特定字段的某些值。我检查当对象到来时包含特定值存在的值,但在写xml
后该值不存在。
这是我使用的代码,我认为XmlTextWriter
可能是错误xml
的原因。
可以使用另一种方法,即TextWriter
,但无法转换为内存流。
string xmlString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(T));
// XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.ASCII);
TextWriter xmlTextWriter=new StreamWriter(memoryStream,Encoding.ASCII);
xs.Serialize(xmlTextWriter, obj);
memoryStream =(MemoryStream)xmlTextWriter.
//(MemoryStream)xmlTextWriter.BaseStream;
xmlString = ASCIIByteArrayToString(memoryStream.ToArray());
return `xmlString;`
知道我怎么知道问题发生的原因和地点。
答案 0 :(得分:6)
我认为你的内存流过于复杂。如果要获取XML字符串,可以序列化为StringWriter(派生自TextWriter),然后调用ToString()。
XmlSerializer xs = new XmlSerializer(typeof(T));
StringWriter sw = new StringWriter();
xs.Serialize(sw, obj);
return sw.ToString();
答案 1 :(得分:0)
尝试通过使用语句包装它们来正确处理您的IDisposable资源:
public string SerializeToXml<T>(T obj)
{
using (var stream = new MemoryStream())
{
var xs = new XmlSerializer(typeof(T));
xs.Serialize(stream, obj);
return Encoding.UTF8.GetString(stream.ToArray());
}
}