我正在使用一个返回 <body>
中所有内容的 API XML 标记。
我正在使用以下函数将 XML 反序列化为对象:
public TObject ParseXML<TObject>(string xml)
{
using (TextReader reader = new StreamReader(GetMemoryStream(xml)))
{
XmlSerializer serialiser = new XmlSerializer(typeof(TObject));
return (TObject)serialiser.Deserialize(reader);
}
}
如果对象没有根标记,我如何将我的 XML 反序列化为该对象?
例如,我收到以下响应:
<body>
<active>true</active>
<allow_quote_requests>false</allow_quote_requests>
<currency_iso_code>AUD</currency_iso_code>
body 标签之后的所有内容实际上都是 Offer
对象,但是因为该标记不存在,所以我不确定如何将其反序列化为该对象。如果我将这些属性添加到 Body
中,它就会起作用模型。
最佳答案
/// <summary>
/// Deserialize an object from the given reader which has been positioned at the start of the appropriate element.
/// </summary>
/// <typeparam name="T">the type of the object to deserialize</typeparam>
/// <param name="reader">the reader from which to deserialize the object</param>
/// <returns>an object instance of type 'T'</returns>
public static T DeserializeFromXml<T>(XmlReader reader)
{
T value = (T)new XmlSerializer(typeof(T), new XmlRootAttribute(reader.Name) { Namespace = reader.NamespaceURI }).Deserialize(reader);
return value;
}
关于c# - 如果对象元素根标记不存在,如何将 XML 反序列化为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44319304/