【问题标题】:Add namespace with colon to xml file将带冒号的命名空间添加到 xml 文件
【发布时间】:2013-07-12 09:38:04
【问题描述】:

我需要生成一个如下所示的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<ns:Root xmlns:ns0="http://namespace">
  <Node1>
    <A>ValueA</A>
    <B>ValueB</B>
  </Node1>
</Root>

这是我的代码:

const string ns = "http://namespace";
var xDocument = new XDocument(
    new XElement("Root",
        new XAttribute(XNamespace.Xmlns + "ns0", ns),
        new XElement("Node1",
            new XElement("A", "ValueA"),
            new XElement("B", "ValueB")
        )
    )
);

但这会产生:

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns:ns0="http://namespace">
  <Node1>
    <A>ValueA</A>
    <B>ValueB</B>
  </Node1>
</Root>

注意根节点前缺少的“ns0:”。我怎样才能添加它?其他一切都应该完全相同。

【问题讨论】:

  • 您是否尝试将"ns:Root" 改为"Root" 作为第一个XElement 构造函数的参数?
  • @HuorSwords:不起作用,我得到“':'字符,十六进制值 0x3A,不能包含在名称中”异常。
  • 请检查此answer 是否有类似(甚至不相等)的问题。

标签: c# xml .net-4.0 xelement xnamespace


【解决方案1】:

试试这个

XNamespace ns = XNamespace.Get("http://namespace");

var xDocument = new XDocument(
                new XElement(ns + "Root",
                    new XAttribute(XNamespace.Xmlns + "ns0", ns),
                    new XElement("Node1",
                        new XElement("A", "ValueA"),
                        new XElement("B", "ValueB")
                        )));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2017-09-21
    • 2013-09-21
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多