Мне нужны несколько xmlns элементов в элементе с XmWriter

Я пытаюсь преобразовать xml документ от одного формата до другого, и при выполнении этого я нашел, что должен вставить несколько xmlns объявлений в корневой элемент.

Пример:

<? версия xml = "1.0" кодирование = "utf-8"?>
<Обрабатывают xmlns по шаблону = "http://tempuri.org/TemplateBase.xsd" xmlns:TYPES = "http://tempuri.org/TemplateTypes.xsd">
некоторое содержание
<Шаблон>

Причина всего этого состоит в том, что я разделил схему XSD на несколько XSD для многократного использования общих типов в этом случае.

Ну, что я хочу сделать, теперь должен записать этот xml с XmlTextWriter, но я не могу записать атрибут xmlns для ТИПОВ.

Что я попробовал, до сих пор:

XmlWriter xmlWriter = XmlWriter.Create(filename, settings);  
xmlWriter.WriteStartElement("Template", "http://tempuri.org/TemplateBase.xsd");
xmlWriter.WriteAttributeString("xmlns", "TYPES", "http://tempuri.org/TemplateTypes.xsd", XmlSchema.InstanceNamespace);

Когда я выполняю этот код, я получаю следующее исключение:
Система. ArgumentException: Префикс "xmlns" резервируется для использования XML..

У кого-либо есть какое-либо средство исправления к моей текущей головной боли?

6
задан pnuts 16 November 2015 в 23:08
поделиться

2 ответа

Используйте

xmlWriter.WriteAttributeString("xmlns", "TYPES", 
    null, "http://tempuri.org/TemplateTypes.xsd");

вместо

 xmlWriter.WriteAttributeString("xmlns", "TYPES", 
    "http://tempuri.org/TemplateTypes.xsd", XmlSchema.InstanceNamespace);

. Это должно дать вам желаемый результат.

9
ответ дан 10 December 2019 в 02:45
поделиться

Это очень просто. Не записывайте атрибуты xmlns .

Вместо этого вы должны записывать свои атрибуты и элементы в пространстве имен, которому они принадлежат. XmlWriter самостоятельно позаботится об объявлениях пространства имен (атрибутов xmlns).

0
ответ дан 10 December 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: