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

时间:2014-05-08 16:24:55

标签: asp.net c#-4.0 xelement

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

new XElement("media:thumbnail", new XAttribute("width", ""))

但我不行,因为冒号':'我收到错误。

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

1 个答案:

答案 0 :(得分:2)

这不是您如何使用命名空间创建XName

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

XNamespace media = "... some URI here ...";
XElement element = new XElement(media + "thumbnail", new XAttribute("width", "");

要使用特定的命名空间别名,您需要在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);        
    }
}

输出:

<root xmlns:media="http://someuri">
  <media:thumbnail>content</media:thumbnail>
</root>

显然你需要使用正确的名称空间URI,但是......