向XDocument添加具有相同地址的多个名称空间

本文关键字:空间 地址 添加 XDocument | 更新日期: 2023-09-27 18:08:03

我需要为xdocument添加多个具有相同地址的名称空间(c#)

<root xmlns:f="urn://xml.voodoo.net/vd/formating-1.0" xmlns="urn://xml.voodoo.net/vd/formating-1.0">
 <a:something>stuff and more stuff</a:something>
</root>

如果我使用下面的代码添加…它只显示xmlns:f

XNamespace defaultNS = "urn://xml.voodoo.net/vd/formating-1.0";
XNamespace f = "urn://xml.voodoo.net/vd/formating-1.0";

XElement rootElement = new XElement(defaultNS + "root",
new XAttribute(XNamespace.Xmlns + "f", f.NamespaceName),

如何显示两个命名空间??这可能吗?

向XDocument添加具有相同地址的多个名称空间

var doc = new XDocument(
    new XElement(defaultNS + "root",
        new XAttribute(XNamespace.Xmlns + "f", defaultNS),
        new XAttribute("xmlns", defaultNS),
        new XElement(defaultNS + "something",
            new XAttribute(XNamespace.Xmlns + "f", defaultNS), "stuff and more stuff")
            )
    );
所需输出:

<root xmlns:f="urn://xml.voodoo.net/vd/formating-1.0" xmlns="urn://xml.voodoo.net/vd/formating-1.0">
  <f:something xmlns:f="urn://xml.voodoo.net/vd/formating-1.0">stuff and more stuff</f:something>
</root>

您的XML示例不正确,没有使用'f'命名空间,而存在'a'命名空间。

你的c#代码与你的XML不匹配,它创建了一个带有属性的元素。

无论如何,XML文档中的名称空间定义只有在实际使用时才有意义。如果您通过c#代码创建XML文档,它将生成语义正确的XML,但可能与示例的语法不匹配。