Сериализация xml в C # с несколькими пространствами имен, имеющих одинаковые uri, но разные префиксы - PullRequest
0 голосов
/ 11 июня 2019

Мне нужно отправить файл XML в службу, над которой я не имею никакого контроля, поэтому он должен быть отформатирован в точности так, как указано, иначе он будет отклонен, особая проблема с форматированием - добавление нескольких пространств имен к файл с тем же URI, но с разными префиксами, конечный результат должен выглядеть точно так:

<RootElement xmlns="http://www.example.com/example"  
             xmlns:prefix="http://www.example.com/example">

или он будет автоматически отклонен.

Я пытался использовать класс XmlSerializerNamespaces с моим XmlSerializer, чтобы добавить оба пространства имен следующим образом:

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(String.Empty,"http://www.example.com/example");
ns.Add("prefix", "http://www.example.com/example");

но если URI один и тот же, добавляется только один, если я изменяю второй URI, добавляются оба элемента.

РЕДАКТИРОВАТЬ: Для тех, кто хочет решить эту или аналогичную проблему в будущем, тривиальный способ создания этих очень отформатированных XML-файлов - это использование класса XMLDocument вместо класса XDocument. XDocument попытается исправить ваше форматирование, но XMLDocument позволит вам делать «неправильно», если этого требует ваш веб-сервис.

...