如何从XElement创建的节点中删除空xmlns属性

时间:2012-08-20 13:30:40

标签: c# .net xml linq-to-xml

这是我的代码:

XElement itemsElement = new XElement("Items", string.Empty);
//some code
parentElement.Add(itemsElement);

之后我得到了这个:

<Items xmlns=""></Items>

父元素没有任何命名空间。我该怎么做才能获得没有空命名空间属性的Items元素?

1 个答案:

答案 0 :(得分:64)

关于如何处理命名空间的全部内容。下面的代码创建具有不同命名空间的子项:

XNamespace defaultNs = "http://www.tempuri.org/default";
XNamespace otherNs = "http://www.tempuri.org/other";

var root = new XElement(defaultNs + "root");
root.Add(new XAttribute(XNamespace.Xmlns + "otherNs", otherNs));

var parent = new XElement(otherNs + "parent");
root.Add(parent);

var child1 = new XElement(otherNs + "child1");
parent.Add(child1);

var child2 = new XElement(defaultNs + "child2");
parent.Add(child2);

var child3 = new XElement("child3");
parent.Add(child3);

它将生成如下所示的XML:

<root xmlns:otherNs="http://www.tempuri.org/other" xmlns="http://www.tempuri.org/default">
    <otherNs:parent>
        <otherNs:child1 />
        <child2 />
        <child3 xmlns="" />
    </otherNs:parent>
</root>

查看child1child2child3之间的区别。 child2是使用默认命名空间创建的,这可能就是您想要的,而child3就是您现在所拥有的。