我正在尝试编写一个通用方法,可用于将 xml 反序列化为对象数组。
鉴于 XML 看起来像这样:
<people>
<person>
<someElement>content</someElement>
</person>
<person>
<someElement>more content</someElement>
</person>
</people>
在下面的代码中显示为xmlDoc
. 和一个person
类T
XmlNodeReader reader = new XmlNodeReader(xmlDoc.DocumentElement);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T[]), new XmlRootAttribute(xmlDoc.DocumentElement.Name));
results = xmlSerializer.Deserialize(reader) as T[];
这按预期工作,并返回person[]
2 个条目。
但是,在我正在使用的 API 中,如果只返回 1 个结果,它只会返回:
<person>
<someElement>content</someElement>
</person>
我的反序列化失败了。person[]
仍然是空的。
关于实现这一点的最佳方法的任何想法?
编辑
我正在考虑在两者之间运行一个 XSLT,并传递T
in 的名称,如果它与根节点匹配,那么添加一个包装节点?