gpt4 book ai didi

c# - 在保留原始 xml 的同时将 xml 序列化为对象?

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:52 26 4
gpt4 key购买 nike

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

最佳答案

您没有共享 this.Execute(url) 的代码,但您可能从流中构建了一个阅读器。首先将该流写入字符串,然后在某处使用它。如果该流不可搜索,则处理它并从中创建一个新流。

另外,请注意,XmlSerializer 可以采用流而不是读取器,因此您永远不必理会读取器,只需在您的方法之间传递流即可。

关于c# - 在保留原始 xml 的同时将 xml 序列化为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com