Мне нужно отправить файл 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 позволит вам делать «неправильно», если этого требует ваш веб-сервис.