Принудительное расширение пустых элементов в XDocument - PullRequest
2 голосов
/ 10 июня 2011

Мы должны отправить 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-документе всегда отображаться как расширенные теги?

На данный момент это критическое исправление для нас - негативное влияние оказывают клиенты нижестоящего уровня.

Большое спасибо!

1 Ответ

2 голосов
/ 10 июня 2011
...