力的XDocument不使用命名空间前缀如果空间也被定义为默认 [英] Force XDocument to not use namespace prefix if namespace is also defined as default

查看:229
本文介绍了力的XDocument不使用命名空间前缀如果空间也被定义为默认的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有与无命名空间前缀指定默认命名空间的XML文件。当我生成XML输出我得到前缀的XML元素。有没有办法摆脱前缀,因为我使用的是默认命名空间?

I have an xml file with default namespace specified with and without namespace prefix. When I generate xml output I'm getting all xml elements prefixed. Is there way to get rid of the prefixes since I'm using the default namespace?

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>



什么我期望:

What I'd expect:

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



可惜我不能去除重复的命名空间声明。我使用的是实际的XML文件是由其他方提供,我需要做的少的修改成为可能。

Unfortunately I can't remove the duplicated namespace declaration. The actual xml file I'm using is provided by another party and I need to do as less modifications as possible.

推荐答案

您可以使用与string.replace方法来获得所需的XML格式...

You Can Use String.Replace Method to Get The Required XML Format ...

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);

这篇关于力的XDocument不使用命名空间前缀如果空间也被定义为默认的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆