2013-07-10 2 views
0

Я работаю со спецификацией xml вне моей организации. Мне нужно сгенерировать XML-файл, соответствующий спецификации. Файл не будет проверять должным образом, если пространство имен по умолчанию xmlns="ndnqi" не перечислен первый на корневой элемент следующим образом:Как я могу сначала указать пространство имен XML по умолчанию?

<HospYearQtr xmlns="ndnqi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ndnqi NDNQIV10.xsd"> 

я создал классы из XSD с помощью xsd.exe и когда я сериализации в XML он помещает пространство имен по умолчанию xmlns в конце корневого элемента.

Есть ли способ принудительно указать пространство имен по умолчанию?

ответ

0

В идеале, попросите их исправить свой разбитый парсер. Атрибуты в XSD описывают XML не упорядоченные элементы.

Запрет на то, что вам, вероятно, понадобится сделать что-то вроде замены Regex после создания контента. Что-то вроде кода ниже должно быть полезной отправной точкой.

Regex moveDefaultNamespace = new Regex(@"(<\w+)\s+(.*?)(xmlns="".+?"")\s+(.*?>)"); 
string xmlText = "<HospYearQ1tr xmlns=\"ndnqi\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"ndnqi NDNQIV10.xsd\">"; 
string reordered = moveDefaultNamespace.Replace(xmlText, "$1 $2 $3 $4");