По поводу другого моего вопроса: XML десериализует нулевые элементы?
У меня есть такие элементы от стороннего сервера для тестирования API:
<Taxable />
<DefaultPurchasePrice />
Я только что понял, что сейчас я путаюсь с тем, представляют ли такие элементы нулевой объект или пустой.
Говоря об объектах, они одинаковы, нулевой объект обычно означает пустую ссылку на объект, верно? Но, пытаясь отобразить элемент XML в поле данных / значение, они могут отличаться, т. Е. Пустая строка является пустой строкой, но для десятичной цены или логического значения они не определены, что равно пустому, но не будет нулевым, если только они не определены как обнуляемый.
Опять же, проблема с моим XmlSerializer в том, что он не обрабатывает передачу пустого элемента, подобного этому. Могу ли я легко исправить это в моем коде. Или я должен спросить людей, чтобы у XML был четко определенный XML? Потому что кажется, что такой пустой элемент XML не определен: он здесь, но может быть либо нулевым, либо пустым, не имеет значения для самого элемента XML? Но для этого элемента мой код должен выяснить, как с этим справиться, если я не установлю все свое поле данных класса C # как строковый тип. В противном случае, если мой код попытается напрямую сопоставить пустой или нулевой элемент XML с определенным полем данных, он обязательно потерпит неудачу.
Я должен задать этот вопрос, потому что я столкнулся с тем, что в XML много таких элементов
и для этих специальных элементов мой код .NET XML-сериализации должен отображать эти поля как строки, и если строка не пустая, я помещаю их в соответствующий тип данных, в противном случае я устанавливаю их в null. И я заканчиваю тем, что удаляю эти пустые элементы перед моей десериализацией, потому что это намного проще. Но я делаю блуждание: «Что я действительно делаю в своем коде? Я просто удалил нулевые элементы или пустые элементы? Потому что они явно разные! Но люди, пишущие этот XML, думают, что они одинаковы, потому что сам XML Я не имею понятия «ноль», и некоторые люди утверждают, что я обязан решить, является ли он пустым или пустым. Но XML действительно позволяет вам представлять «нулевые» элементы более ясным способом
Edit:
В представленном мною примере эти два элемента должны быть нулевыми, а не пустыми. XML на самом деле не имеет понятия нуля, но эти элементы могут быть либо опущены (если они нулевые, не помещайте их в XML), либо использовать лучшее представление, как упомянуто как @svick. Или в других случаях, пустые элементы должны использоваться, когда они имеют смысл. Но не для десятичного или логического.