Сгенерированный класс XSD, содержащий свойство System.Xml.XmlElement - PullRequest
0 голосов
/ 30 октября 2018

В настоящее время я работаю с генерацией файлов XML, используемых для настройки сервера.

У меня есть класс, сгенерированный с помощью xsd, который содержит свойство типа System.Xml.XmlElement.

public class GeneratedClass
{
    ...

    private System.Xml.XmlElement informationField;

    [System.Xml.Serialization.XmlArrayItemAttribute("Information", IsNullable=false)]
    public System.Xml.XmlElement Information {
        get {
            return this.informationField;
        }
        set {
            this.informationField = value;
        }
    }

    ...
}

У меня проблемы с "внедрением" пользовательского объекта в это свойство информации.

public class MyExampleObject
{
    public string Name { get; set; }
    public string Id { get; set;
}

Программа десериализует XML-файл типа GeneratedClass, и после этого я хочу добавить MyExampleObject к свойству Informations.

В настоящее время я делаю это следующим образом:

        XmlDocument doc = new XmlDocument();

        using (XmlWriter writer = doc.CreateNavigator().AppendChild())
        {
            XmlSerializer serializer = new XmlSerializer(typeof(MyExampleObject));
            serializer.Serialize(writer, MyObject);
        }

        this.Information = doc.DocumentElement;

После этого я сериализую весь объект в файл, но когда я делаю это, я получаю нежелательные атрибуты пространства имен xml. <Information xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="">

Я нашел другие сообщения с похожими проблемами, но предложенные решения оставляют меня с <Information xmlns="">, который все еще не является полным решением.

У меня такое ощущение, что может быть какой-то другой способ сделать это, но я не уверен, как.

Есть предложения?

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