c# - 如何为 XDocument 设置默认的 XML 命名空间

标签 c#

如何设置现有 XDocument 的默认 namespace (以便我可以使用 DataContractSerializer 反序列化它)。我尝试了以下方法:

var doc = XDocument.Parse("<widget/>");
var attrib = new XAttribute("xmlns",
                            "http://schemas.datacontract.org/2004/07/Widgets");
doc.Root.Add(attrib);

我得到的异常是 不能在同一个起始元素标记中将前缀“”从“”重新定义为“http://schemas.datacontract.org/2004/07/Widgets”。

有什么想法吗?

最佳答案

不确定这是否已经在 .net 3.5 中工作或仅在 4 中工作,但这对我来说工作正常:

XNamespace ns = @"http://mynamespace";
var result = new XDocument(
    new XElement(ns + "rootNode",
        new XElement(ns + "child",
            new XText("Hello World!")
         )
     )
 );

生成此文档:

<rootNode xmlns="http://mynamespace">
    <child>Hello World!</child>
</rootNode>

重要的是始终使用 ns + "NodeName" 语法。

关于c# - 如何为 XDocument 设置默认的 XML 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2874422/

相关文章:

javascript - 使单选按钮在加载表单时不被选中?

c# - Microsoft Application Insights 的性能注意事项?

c# - 如何定义三个状态 bool 值但不是可空值?

c# - 如果我只在 HttpGet 上验证是否安全?

c# - 什么框架使用 `IServiceProvider` ?

c# - 从程序集中获取文件

c# - 我在 ToolStripSeparator c# 中看不到 RenderMode-property

c# - 查找 Double 小数点后的位数

c# - .net DirectoryInfo 通配符模式来处理排除

c# - 如何为 XmlElement 字段定义多个名称?