XmlSerializer может десериализовать в Nullable <интервал>?

Это зависит от сценариев. Проект MTA состоит из разных модулей, имеющих одинаковый жизненный цикл приложения, но они не являются проектами с несколькими модулями maven. Если у вас есть только проект JAVA, вы можете вручную преобразовать его в проект maven, изменив manifest.yml как файл дескриптора развертывания вместо mta.yml. Не могли бы вы немного развить свой сценарий?

8
задан James A Mohler 14 September 2013 в 17:41
поделиться

2 ответа

Я думаю, что необходимо снабдить префиксом ноль = "верный" с пространством имен для XmlSerializer для десериализации к пустому указателю.

MSDN на xsi:nil

<?xml version="1.0" encoding="UTF-8"?>
<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="array">
  <entity>
    <id xsi:type="integer">1</id>
    <name>Foo</name>
    <parent-id xsi:type="integer" xsi:nil="true"/>
6
ответ дан 5 December 2019 в 19:04
поделиться

Мое исправление - предварительная обработка узлов, исправление любые атрибуты «nil»:

public static void FixNilAttributeName(this XmlNode @this)
{
    XmlAttribute nilAttribute = @this.Attributes["nil"];
    if (nilAttribute == null)
    {
        return;
    }

    XmlAttribute newNil = @this.OwnerDocument.CreateAttribute("xsi", "nil", "http://www.w3.org/2001/XMLSchema-instance");
    newNil.Value = nilAttribute.Value;
    @this.Attributes.Remove(nilAttribute);
    @this.Attributes.Append(newNil);
}

Я объединяю это с рекурсивным поиском дочерних узлов, так что для любого заданного XmlNode (или XmlDocument) я могу выполнить единственный вызов перед десериализацией.

3
ответ дан 5 December 2019 в 19:04
поделиться
Другие вопросы по тегам:

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