Изменить имя корневого элемента при сериализации с помощью XDocument - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь изменить корневое имя при сериализации на XDocument.

Я пытаюсь сериализовать (n внутренний) класс и получить корневое имя 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 Ответ

1 голос
/ 14 апреля 2019

Как отмечено в документации , вам нужно использовать атрибут DataContract или Serializable для класса, в котором вы собираетесь использовать DataContractSerializer. Атрибут XmlRoot предназначен для использования с XmlSerializer, как отмечено @ jdweng в их комментарии .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...