我正在使用外部 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);