2014-12-23 4 views
0

Я всегда получаю исключение ниже, когда пытаюсь добавить атрибут, почему он не работает?Добавление атрибута в XML-узел всегда сбой

Приставка «» не может быть переопределен от «» до «» http://ws.plimus.com в пределах одного тега начала элемента.

Код

var docXml = new XElement("param-encryption", 
    new XAttribute("xmlns", "http://ws.plimus.com"), 
    new XElement("parameters")); 

var s = docXml.ToString(); 

Я хочу, чтобы получить результат, как

<param-encryption xmlns="http://ws.plimus.com"> 
    <parameters> 


    </parameters> 
</param-encryption> 
+0

Является ли это корневой элемент? – Amit

+0

@Amit Да, это корневой элемент. – Tomas

ответ

0

Этот простой подход должен позволить LINQ к XML сделать это автоматически, указав пространство имен в имени элемента:

XNamespace ns = "http://ws.plimus.com"; 
var docXml = new XElement(ns + "param-encryption", new XElement(ns + "parameters")); 

docXml.ToString():

<param-encryption xmlns="http://ws.plimus.com"> 
    <parameters /> 
</param-encryption> 
0

Попробуйте -

XNamespace aw = "http://ws.plimus.com"; 
XElement root = new XElement("param-encryption", 
    new XAttribute(XNamespace.Xmlns + "aw", "http://ws.plimus.com"), 
    new XElement("Child", "child content") 
); 
Console.WriteLine(root); 

(EDIT): - использовать это, если вы не хотите имен псевдоним

XNamespace aw = "http://ws.plimus.com"; 
    XElement root = new XElement(aw + "param-encryption", 
     new XAttribute("xmlns", "http://ws.plimus.com"), 
     new XElement(aw + "Child", "child content") 
    ); 
+0

Это не создаст XML, описанный OP. – JLRishe

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