使用XDocument序列化时更改根元素的名称

时间:2019-04-14 08:03:08

标签: c# xml serialization

序列化到XDocument时,我尝试更改根名称。

我尝试序列化一个(n inner)类并获得根名称Test.MyClass
我尝试使用XmlRoot属性进行更改,但没有任何反应。更改根名称的诀窍是什么?还是我将XDocument用于它无法完成的事情?

[TestClass]
public class MyTestClass
{
    [TestMethod]
    public void TestMethod()
    {
        var res = Serialise(new MyClass());
    }

    private static XDocument Serialise(object objectToSerialize)
    {
        var doc = new XDocument();
        using (var writer = doc.CreateWriter())
        {
            var serializer = new DataContractSerializer(objectToSerialize.GetType());
            serializer.WriteObject(writer, objectToSerialize);
        }
        return doc;
    }

    [XmlRoot("NewName")]
    public class MyClass { }
}

我明白了

<MyTestClass.MyClass/>

但我想要

<NewName/>

1 个答案:

答案 0 :(得分:1)

the documentation中所述,您需要在将要使用DataContract的类上使用SerializableDataContractSerializer属性。 XmlRoot属性与XmlSerializer配合使用,如jdweng中的@ their comment所示。