Как везде использовать префиксы пространства имен XML без xmlns=? (.СЕТЬ)

Тема, наверное, слишком короткая, чтобы ее объяснять...

Я пишу XML-файлы вообще без пространств имен для какого-то приложения. Эту часть я не могу изменить. Но теперь я собираюсь расширить эти файлы с помощью собственных имен элементов, определяемых приложением, и я хотел бы поместить их в другое пространство имен. Для этого результат должен выглядеть так:

<doc xmlns:x="urn:my-app-uri">
  <a>existing element name</a>
  <x:addon>my additional element name</x:addon>
</doc>

Я использовал XmlNamespaceManager и добавил к нему свой URI с префиксом «x». Я также передал его каждому CreateElement для имен моих дополнительных элементов. Но самое близкое, что я могу получить, это:

<doc>
  <a>existing element name</a>
  <addon xmlns="urn:my-app-uri">my additional element name</addon>
</doc>

Или, может быть, также

  <x:addon xmlns:x="urn:my-app-uri">my additional element name</x:addon>

Итак, дело в том, что мой URI записывается в каждый из моих дополнительных элементов, и общий префикс не записывается в элемент документа, где я хотел бы его иметь.

Как я могу получить указанный выше результат XML с помощью .NET?


person ygoe    schedule 04.04.2010    source источник


Ответы (1)


В целом, используя основные методы DOM уровня 2, вы ожидаете:

doc.documentElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:x", "urn:my-app-uri");

добавить объявление пространства имен в корневой элемент; то при сериализации с использованием алгоритма пространства имен, указанного в DOM Level 3 LS, этот префикс будет использоваться без добавления нового объявления xmlns.

Не проверял, что XmlDocument .NET понимает это правильно, но я надеюсь, что да.

person bobince    schedule 05.04.2010