【问题标题】:How can I use ':' character in a name of XDocument element?如何在 XDocument 元素的名称中使用 ':' 字符?
【发布时间】:2011-05-25 13:54:07
【问题描述】:

我正在使用 XDocument 创建一个与下面代码相同的 RSS:

var document = new XDocument(
    new XDeclaration("1.0", "utf-8", null),
    new XElement("rss",
                 new XElement("channel",
                              new XElement("title", "test"),
                              new XElement("dc:creator", "test"),

执行此代码期间发生异常。

“:”字符,十六进制值 0x3A,不能包含在名称中。

如何在元素名称中使用: 字符?

【问题讨论】:

标签: c# .net linq linq-to-xml special-characters


【解决方案1】:

要使用命名空间,您需要先创建命名空间对象:

更新

XNamespace ns = "http://purl.org/dc/elements/1.1/";
var document = new XDocument(
            new XDeclaration("1.0", "utf-8", null),
            new XElement("rss", new XAttribute(XNamespace.Xmlns + "dc", ns)
                         new XElement("channel",
                                      new XElement("title", "test"),
                                      new XElement(ns + "creator", "test"),
            ....

【讨论】:

  • 您还会注意到,没有使用 ':',而是将命名空间与元素的名称连接起来(这会产生 XName)。
  • 这个解决方案的结果是 但我需要
  • 两者是等价的,'dc:' 只是使用已别名 xml 命名空间的一种简短方式(如使用 xmlns:dc="..." 声明的)
  • @user667429,我更新了答案以按照您的要求进行格式化
  • 如果您想在输出中实际看到 <... dc xmlns href="http://stackoverflow.com/questions/4340096/xelement-add-an-xmlns" target="_blank" rel="nofollow">
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多