Как использовать префиксы пространства имен XML без xmlns = "..." везде? (.СЕТЬ) - PullRequest
3 голосов
/ 04 апреля 2010

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

Я пишу 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?

1 Ответ

2 голосов
/ 05 апреля 2010

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

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

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

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

...