如何在使用XmlSerializer保留内容的同时更改根元素名称?

G33*_*una 10 .net c# xml xml-serialization

我有一个XML文档:

<data>
    <elmt1>Element 1</elmt1>
    <elmnt2>Element 2</elmnt2>
    <elmnt3>Element 3</elmnt3>
</data>
Run Code Online (Sandbox Code Playgroud)

我需要反序列化为一个序列化为不同根名称的对象,其他所有内容保持不变.

例如:

<dataNew>
    <elmt1>Element 1</elmt1>
    <elmnt2>Element 2</elmnt2>
    <elmnt3>Element 3</elmnt3>
</dataNew>
Run Code Online (Sandbox Code Playgroud)

序列化时,我们总是可以应用XmlRootAttribute序列化到不同的根名称,但我不知道如何反序列化为不同的XmlRootAttribute.它始终未能error in document (1,2)指向root属性.

我怎样才能做到这一点?

小智 14

如果它只是您想要更改的根名称,则可以在声明XmlSerializer时指定root属性.

XmlSerializer xmlSerializer = new XmlSerializer(typeof(data), new XmlRootAttribute("dataNew"));
Run Code Online (Sandbox Code Playgroud)


mka*_*ato 11

XmlRootAttribute应该可行

[XmlRoot("dataNew")]
public class MyData()
{
    [XmlElement("elmt1")]
    public string myElement1{get;set;}

    [XmlElement("elmnt2")]
    public string myElement2{get;set;}

    [XmlElement("elmtn3")]
    public string myElement3{get;set;}

}
Run Code Online (Sandbox Code Playgroud)

编辑:完成XML


Has*_*ell 5

您是否尝试使用XmlAttributeOverrides类?