Подтвердить что ты не робот

Как удалить пустой атрибут xmlns из node, созданный XElement

Это мой код:

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

После этого я получил следующее:

<Items xmlns=""></Items>

Родительский элемент не имеет пространства имен. Что я могу сделать, чтобы получить элемент Items без пустого атрибута пространства имен?

4b9b3361

Ответ 1

Это все о том, как вы обрабатываете свои пространства имен. В приведенном ниже коде создаются дочерние элементы с разными пространствами имен:

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>

Посмотрите на разницу между child1, child2 и child3. child2 создается с использованием пространства имен по умолчанию, которое, вероятно, вы хотите, а child3 - это то, что у вас есть.