asp.net 将textwriter分配给内存写入器

laawzig2  于 2023-10-21  发布在  .NET
关注(0)|答案(2)|浏览(118)

我写一个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;`

任何想法我怎么能知道为什么和哪里的问题发生。

z2acfund

z2acfund1#

我觉得你用记忆流把它复杂化了。如果要获取XML字符串,可以序列化为StringWriter(从TextWriter派生),然后调用ToString()。

string str;
XmlSerializer xs = new XmlSerializer(typeof(T));
using (var sw = new System.IO.StringWriter())
{
   xs.Serialize(sw, obj);
   str = sw.ToString();
}
return str;
5lhxktic

5lhxktic2#

尝试通过将IDisposable资源 Package 在using语句中来正确处理它们:

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());
    }
}

相关问题