我有一个XML字符串,它具有以下结构:
<Element>
<Property1>Something</Propert1>
<Property2>SomethingElse</Property2>
</Element>
<Element>
<Property1>Something2</Propert1>
<Property2>SomethingElse2</Property2>
</Element>
我希望将它序列化为一个 List<Element>
。
我使用以下代码:
XmlSerializer xd = new XmlSerializer(typeof(T));
XDocument xdoc = XDocument.Parse(xmlStringToDesirialize);
T deserializedObject = xd.Deserialize(xdoc.CreateReader()) as T;
其中T
是List<Element>
。我得到了一个异常,说有多个根元素
。我理解这是为什么,但是我不确定该怎么做。
我想添加一个伪根元素,比如<Elements>
可能是一个好的解决方案,但我不知道如何将其添加到我已经拥有的XML文档中。
或者也许有其他替代方案。
编辑:为了完整起见,我正在添加所需的反序列化完整解决方案的代码,以防有人需要。
我创建了一个类:
[XmlRoot("myRoot", Namespace = "")]
public class MyRoot
{
[XmlElement("Element", Namespace = "{The xmlns of the actual class}")]
public List<Element> Elements {get; set;}
public MyRoot()
{
Elements = new List<Element>();
}
}
接着我按照@Richard的建议添加标签后,对这个类进行反序列化。 希望这能帮助到某些人。