Я работаю против стороннего xml api. Они определили требуемую структуру xml, подобную следующей.
<ns1:E xmlns:ns1="schema">
<ns1:B>
<ns2:S>
<ns2:V>
<ns2:Bl />
</ns2:V>
</ns2:S>
</ns1:B>
</ns1:E>
Существует таблица SQL с информацией, которую мне нужно поместить в этот XML-формат. У меня есть адаптер LINQ to SQL для получения данных, и я использую System.Xml
для создания XML-документа.
XmlDocument.CreateElement("ns1:E"); etc
Это отлично работает, пока я удаляю двоеточия из имен элементов. С двоеточиями только имя правой части двоеточия находится в имени элемента. Я знаю, что двоеточия - нет-нет, но я не контролирую то, что диктует сторонняя апи.
Каковы мои возможности обойти это? Существуют ли какие-либо полезные способы принуждения двоеточий к именам элементов? Мне не нужно использовать XMLDocument
, но не уверен, что другой метод получит меня там.
UPDATE: Я понимаю, что <ns1:
относится к пространству имен. И да, есть 2. При написании XML я могу заставить его работать, если я скажу -
XmlDocument.CreateElement(ns1:E", "http://schema);
Однако вывод XML этого файла
<ns1:E xmlns:ns1="http://schema">
Если я просто скажу XmlDocument.CreateElement("ns1:E");
без uri, то выход будет просто <E>
. Я не хочу, чтобы на выходе была ссылка на схему, но мне нужен префикс. Результат, который я хочу достичь, просто <ns1:E>
. Оба пространства имен объявлены наверху, что, я думаю, означало бы, что я должен был бы объявить их на каждом node.