【问题标题】:XElement with colon in the name doesn't work [duplicate]名称中带有冒号的 XElement 不起作用 [重复]
【发布时间】:2014-05-08 16:24:54
【问题描述】:

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

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

但我不工作,因为冒号':'而出现错误。

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

【问题讨论】:

    标签: asp.net c#-4.0 xelement


    【解决方案1】:

    这不是您使用命名空间创建 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>
    

    显然您需要使用 right 命名空间 URI,但...

    【讨论】:

    • 嗨@jon,我做到了,但我的输入是
    • @AdamB:这表明您使用media 作为您的命名空间URI,这几乎肯定是不正确的。仔细阅读我的回答,包括示例。
    • 非常感谢
    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2022-10-20
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多