2016-03-07 2 views
3

У меня есть небольшая проблема, что я думал, что не было никакой опасности ... но увы ...Добавление XML: пространство для корневого элемента

У меня есть некоторые XML и все, что я хочу сделать, это добавить xml:space="preserve" к корневому элементу с помощью C#.

Я попытался это:

var rootElem = xDoc.Root; // XDocument 
rootElem.SetAttributeValue("{xml}space", "preserve"); 

Результатом этого является:

<ProjectDetails xmlns="http://site/ppm" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" p3:space="preserve" xmlns:p3="xml"> 

Я думаю это эквивалентно

<ProjectDetails xmlns="http://site/ppm" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:space="preserve"> 

Но поскольку xml:space это специальный атрибут , Я немного сомневаюсь.

So:

Они идентичны?

Есть ли способ, который я могу добавить в документ «чистым» способом?

ответ

7

Вам просто нужно правильно XName значение - Я хотел бы использовать это:

doc.Root.SetAttributeValue(XNamespace.Xml + "space", "preserve"); 

Оператор XName +(XNamespace, string), как правило, самый простой способ работы с пространствами имен в LINQ к XML, в моем опыте.

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