将属性添加到XML节点总是失败

时间:2014-12-23 12:20:32

标签: c# 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>

2 个答案:

答案 0 :(得分:0)

这个最简单的方法是让LINQ to 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>

答案 1 :(得分: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);

(编辑): - 如果您不想要名称空间别名

,请使用此选项
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")
    );