2011-02-10 5 views
2

Привет Я создаю xml programatically.Я использую namespace.In некоторых местах мне не нужно пространство имен, и поэтому я передаю String.Empty.My имена элементов содержат двоеточие ex gd: City.The проблема если я передаю null в третьем параметре createElement, то в выводе я получаю City, а не gd: city.How я решаю эту проблему. Мне нужно o/p как gd: City в то же время, я не хочу передать пространство имен.Создание xml в C#

С уважением Sanchaita Чакраборти

+1

Если вы префикс элемента с 'gd:', то вы используете пространство имен 'gd' – Nekresh

+1

Итак, вы хотите пространство имен, но не хотите передавать его сами? Как насчет метода оболочки, который добавит вам пространство имен? –

ответ

1

Вы должны использовать NameSpaceManager. Что-то вроде:

XmlNamespaceManager nsm = new XmlNamespaceManager(myXmlDocument.NameTable); 
nsm.AddNamespace("gd", "http://mynamespacehere"); 
XmlNode nde = myXmlDocument.CreateElement("gd", "NewElement", "http://mynamespacehere"); 

Edit: В соответствии с комментариями другого автора, вы не можете создать имя элемента, содержащего двоеточие (см W3Spec here и репетит на пространствах имен here). Если у элемента HAS есть двоеточие (:), это означает, что вы УЖЕ используете пространство имен - найдите соответствующий xmlns: gd = "http: // mynamespacehere" в родительском узле вашего элемента City (или самого города).

«gd» является просто заполнителем (называемым префиксом) для пространства имен. Ваш элемент - City, в пространстве имен - у меня нет вашего полного XML-сообщения, для которого был назначен префикс «gd».

+0

В некоторых случаях я хочу сохранить пространство имен как null. Но при этом я теряю префикс –

+0

Пожалуйста, помогите мне решить эту проблему –

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