Сериализация XML - XmlCDataSection как сериализация. XmlText

Обратные вызовы о сигналах, и "новый" о создании экземпляров объектов.

В этом случае было бы еще более уместно выполнить просто "обратный вызов ()"; чем "возврат новый обратный вызов ()", потому что Вы ничего не делаете с возвращаемым значением так или иначе.

(И arguments.length == 3 теста являются действительно неуклюжими, fwiw, лучше чтобы проверить, что параметрический усилитель обратного вызова существует и является функцией.)

7
задан Dan Atkinson 18 April 2013 в 12:58
поделиться

2 ответа

Спасибо, Ричард, только сейчас у меня была возможность вернуться к этому. Думаю, я решил проблему, воспользовавшись вашим предложением. Я создал объект CDataField, используя следующее:

public class CDataField : IXmlSerializable
    {
        private string elementName;
        private string elementValue;

        public CDataField(string elementName, string elementValue)
        {
            this.elementName = elementName;
            this.elementValue = elementValue;
        }

        public XmlSchema GetSchema()
        {
            return null;
        }

        public void WriteXml(XmlWriter w)
        {
            w.WriteStartElement(this.elementName);
            w.WriteCData(this.elementValue);
            w.WriteEndElement();
        }

        public void ReadXml(XmlReader r)
        {                      
            throw new NotImplementedException("This method has not been implemented");
        }
    }
5
ответ дан 7 December 2019 в 05:25
поделиться

Способ определения Test , ваши данные являются объектом CData. Итак, система сериализации пытается сохранить объект CData.

Но вы хотите сериализовать некоторые текстовые данные как секцию CData.

Итак, сначала типом Test.value должно быть String.

Затем вам нужно управлять сериализацией этого поля, но, похоже, не существует какого-либо встроенного метода или атрибута для управления сериализацией строк (как строка, возможно, с объектами для зарезервированных символов или как CDATA). (Поскольку с точки зрения информационного набора XML все это одно и то же, это не удивительно.)

Вы, конечно, можете реализовать IXmlSerializable и просто самостоятельно закодировать сериализацию типа Test , что даст вам полную контроль.

2
ответ дан 7 December 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: