我需要将多个名称空间添加到具有相同地址(C#)的xdocument
<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),
如何显示2个命名空间?它甚至可能吗?
答案 0 :(得分:2)
您的XML示例不正确,未使用'f'命名空间,而存在'a'命名空间。
您的C#代码与您的XML不匹配,它会创建一个具有属性的元素。
无论如何,XML文档中的命名空间定义只有在您实际使用它时才有意义。如果您通过C#代码创建XML文档,它将生成语义正确的XML,但可能与您示例的语法不匹配。
答案 1 :(得分:2)
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>