Мы должны отправить xml на процессор черного ящика, который не обрабатывает сжатые пустые элементы должным образом и, конечно, мы не можем изменить напрямую.
Если мы отправим:
<element />
Вернемся:
<element>\n</element>
, который отображается как
<element>
</element>
, что вызывает негативную реакцию процессов наших клиентов
Мы должны (нужно) вернуться:
<element></element>
Когда мы отправляем:
<element></element>
результат желаемый, поэтому нам нужно для отправки
<element></element>
не
в черный ящик.
При проверке атрибутов пустых элементов мы отметили, что
<element />
зарегистрирован isEmpty == true, а
<element></element>
зарегистрировал isEmpty как false, поэтому в качестве попытки взлома мы запустили этот цикл:
foreach (XElement feature in _xDocument.Descendants("feature").Where(feature => feature.Element("expiry").IsEmpty))
{
feature.Element("expiry").Value = string.Empty;
}
И в отладке мы определили, что isEmpty стал ложным, и в среде отладки при отправке этого в черный ящик все было хорошо, но когда мы разворачиваемся на наш dev-сервер (и тестируем и prod, конечно), мы все равно в конечном итоге видя вывод из черного ящика, как если бы теги становились пустыми.
Как заставить все пустые элементы в XML-документе всегда отображаться как расширенные теги?
На данный момент это критическое исправление для нас - негативное влияние оказывают клиенты нижестоящего уровня.
Большое спасибо!