名称中带有冒号的 XElement 不起作用

Ada*_*els 2 asp.net xelement c#-4.0

我正在尝试制作类似的东西:

new XElement("media:thumbnail", new XAttribute("width", ""))
Run Code Online (Sandbox Code Playgroud)

但我不工作,并且由于冒号“:”而出现错误。

有谁知道我该如何解决这个问题?

Jon*_*eet 6

这不是您创建XName具有命名空间的方式。

您应该XNamespace使用正确的 URI 创建 ,然后您可以XName轻松创建正确的- 我个人使用该+运算符。所以:

XNamespace media = "... some URI here ...";
XElement element = new XElement(media + "thumbnail", new XAttribute("width", "");
Run Code Online (Sandbox Code Playgroud)

要使用特定的命名空间别名,您需要在 xmlns 命名空间中包含一个属性,该属性可以位于父元素中。

这是一个完整的例子:

using System;
using System.Xml.Linq;

public class Test
{
    static void Main()
    {
        XNamespace ns = "http://someuri";
        var root = new XElement("root", 
                                new XAttribute(XNamespace.Xmlns + "media", ns),
                                new XElement(ns + "thumbnail", "content"));
        Console.WriteLine(root);        
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

<root xmlns:media="http://someuri">
  <media:thumbnail>content</media:thumbnail>
</root>
Run Code Online (Sandbox Code Playgroud)

显然,您需要使用正确的命名空间 URI...

  • @AdamB:这表明您正在使用“media”作为命名空间 *URI*,这几乎肯定是不正确的。仔细阅读我的答案,包括示例。 (2认同)