【发布时间】:2012-06-23 15:51:58
【问题描述】:
我正在使用外部 API 来接收 xml 并将其序列化为一个对象,但我想要一种能够保留用于序列化的原始 xml 以进行调试和审计的方法。
这是我如何序列化的示例:
XmlReader reader = this.Execute(url);
return Read<Property>(reader, "property");
Execute() 例程的摘录:
StringBuilder sb = new StringBuilder();
Stream s = response.GetResponseStream();
XmlReader reader = XmlReader.Create(s);
return reader;
Read() 简单地包装了原生 xml 序列化:
private T Read<T>(XmlReader reader, string rootElement)
{
XmlRootAttribute root = new XmlRootAttribute();
root.ElementName = rootElement;
root.IsNullable = true;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T), root);
object result = xmlSerializer.Deserialize(reader);
return (T)result;
}
我查看了一下,一旦你使用了阅读器,你就不能再使用它了(只转发阅读流?)。在不尝试进行太多更改的情况下,如何将阅读器的内容提取为 xml,同时仍然受益于阅读器的内置序列化?
最好用 out 参数调整 Read:
private T Read<T>(XmlReader reader, string rootElement, out string sourceXml);
【问题讨论】:
标签: c# xml xml-serialization xmlreader