2010-04-04 2 views
3

Тема, вероятно, слишком короткая, чтобы объяснить это ...Как использовать префиксы пространства имен XML без xmlns = "..." везде? (.NET)

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

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

Я использовал XmlNamespaceManager и добавил мой URI с префиксом «х» к нему. Я также передал его каждому элементу 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?

ответ

2

В общем, используя DOM Level 2 метода Ключевых можно было бы ожидать:

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^