2016-05-20 5 views
0

Я использую XElement для создания документа XML в C#, и я пытаюсь установитьКак использовать специальный префикс пространства имен «XML» с XElement

<myEelment xml:space="preserve"> 

Вот моя текущая попытка:

myElement.SetAttributeValue(XName.Get("space", "xml"), "preserve"); 

но выходит так:

<myEelment p4:space="preserve" xmlns:p4="xml"> 

Я понимаю, как это происходит неправильно - мой код использует «XML» в качестве имени URI пространства, когда я хочу использовать в качестве префикса пространства имен. Моя проблема заключается в том, что AFAICT префикс пространства имен «xml» как-то неявный и на самом деле не имеет связанного с ним URI пространства имен. Итак, как я могу генерировать атрибуты с префиксом пространства имен «xml»?

+0

'XNamespace.Xml.GetName ("пространство")' и 'BTW xml' префикс, связанный с' HTTP: // www.w3.org/XML/1998/namespace' URI пространства имен. – PetSerAl

ответ

2

Стандартные пространства имен доступны как свойства класса XNamespace. Используйте это.

var myElement = doc.Descendants("myElement").Single(); 
myElement.SetAttributeValue(XNamespace.Xml + "space", "preserve"); 
+0

Спасибо, я знал, что будет очень простой ответ, но я просто не мог понять, как это сделать. Мне не нравится, как MS переопределил оператор «+», чтобы вы могли добавить пространство имен в строку и получить имя - кажется, это злоупотребление понятием «+» и создает впечатление случайного читателя что вы передаете пространство имен в строку, а затем выполняете конкатенацию строк. По этой причине я предпочитаю синтаксис @ PetSerAl. – Andy

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