XML添加了命名空间和默认名称空间错误



我想为我的根元素创建一个具有两个名称空间的XML文件,一个是默认的,一个是命名的。下面是我的代码:

 var testdoc= new XDocument(
       new XDeclaration("1.0", "utf-8", "yes"),
       new XElement("Document",
            new XAttribute("xmlns", "namespace1"),
            new XAttribute(XNamespace.Xmlns + "xsi", "namespace2"),
            new XElement("sampleElem", "content")
       )
 );

生成以下错误:

"namespace2"的前缀不能在开始新元素的同一代码中重新定义。

我明白这个错误,但我不明白为什么我得到它(因为前缀名称不相同)。有人知道得到预期结果的正确方法吗?

因为在这一行new XElement("Document",中,您已经创建了一个默认具有名称空间的元素。指定要重写的属性。

这样做

XNamespace ns = "namespace1";
var testdoc = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"),
    new XElement(ns + "Document",
        new XAttribute(XNamespace.Xmlns + "xsi", "namespace2"),
        new XElement("sampleElem", "content")
    )
);

最新更新