Атрибут XmlText в базовом классе нарушает сериализацию

показывает это для ya?

http://jsfiddle.net/WZND9/6/

 $('input').change(function() {
    if ($('#one').is(':checked')) {
        alert('checked');
    } else { 
        alert('not checked');
    }
 }); 

11
задан Jeremy 23 March 2010 в 15:59
поделиться

1 ответ

Похоже, это происходит из-за того, что класс LookupItem не имеет дочернего элемента в его XML-представлении. По этой причине XmlSerializer считает его XML-элементом simpleContent . Если вы добавите новое свойство в LookupItem , которое должно быть сериализовано как элемент XML, оно будет работать нормально.

Я просто потратил несколько минут на изучение доступных атрибутов сериализации XML, но не смог найти ни одного, который позволил бы указать, что тип НЕ является элементом simpleContent ...

Итак Я думаю, вы могли бы заставить его работать, добавив фиктивное свойство или поле, которое вы никогда не используете в классе LookupItem . Если вы никогда не присвоите ему значение, он останется пустым и не будет сериализован, но это предотвратит обработку вашего класса как simpleContent . Я знаю, что это грязный обходной путь, но я не вижу другого простого пути ...

public class LookupItem
{
    [System.Xml.Serialization.XmlAttribute()]
    public int ID { get; set; }

    [System.Xml.Serialization.XmlText()]
    public string Name { get; set; }

    public object _dummy;
}

(Кстати, обратите внимание, что атрибут Serializable не требуется для сериализации XML.)

В любом случае, вы действительно нужно сериализовать Имя как текст XML? Это довольно необычно, обычно элементы XML имеют либо простое содержимое (текст), либо дочерние элементы ... Сочетание того и другого затрудняет чтение XML, поэтому, если вы не вынуждены это делать, я предлагаю вам сериализовать Name как атрибут или дочерний элемент.

15
ответ дан 3 December 2019 в 08:03
поделиться
Другие вопросы по тегам:

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