c# - 如果命名空间也被定义为默认值,则强制 XDocument 不使用命名空间前缀

标签 c# xml namespaces linq-to-xml

我有一个 xml 文件,其中指定了带和不带 namespace 前缀的默认 namespace 。当我生成 xml 输出时,我得到了所有 xml 元素前缀。由于我使用的是默认命名空间,有没有办法去掉前缀?

class Program
{
    static void Main(string[] args)
    {
        var xml =
            "<root xmlns='default-namespace' xmlns:key='default-namespace'>" +
            "  <node1></node1>" +
            "  <node2></node2>" +
            "</root>";
        var document = XDocument.Parse(xml);
        var output = document.ToString();
    }
}

输出:

<key:root xmlns="default-namespace" xmlns:key="default-namespace">
  <key:node1></key:node1>
  <key:node2></key:node2>
</key:root>

我的期望:

<root xmlns="default-namespace" xmlns:key="default-namespace">
  <node1></node1>
  <node2></node2>
</root>

不幸的是,我无法删除重复的命名空间声明。我使用的实际 xml 文件是由另一方提供的,我需要做的修改尽可能少。

最佳答案

您可以使用 String.Replace 方法获取所需的 XML 格式 ...

var xml ="<root xmlns='default-namespace' xmlns:key='default-namespace'>" +
         "  <node1></node1>" +
         "  <node2></node2>" +
         "</root>";
        var document = XDocument.Parse(xml);

        var output = document.ToString().Replace("key:", string.Empty);

关于c# - 如果命名空间也被定义为默认值,则强制 XDocument 不使用命名空间前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632451/

相关文章:

c# - 如何获取网址的内容类型?

C# WPF 列表框聊天

android - 如何使用表格布局在 ImageView 上设置文本?

c# - 在C#中使用xPath获取节点属性值

namespaces - 如何获取 Jena RDF 模型中使用的所有命名空间

c# - 登录 Visual Studio 2010 后无法运行代码的原因是什么?

c# - 如何获取收件箱文件夹实例?

java - XML 的分层 Vaadin 树 (MSDL)

c++ - 尝试通过 using-declaration 定义命名空间成员

php - 如何获取PHP类文件中声明的所有use语句