名称中带有冒号的 XElement 不起作用 [重复]
Posted
技术标签:
【中文标题】名称中带有冒号的 XElement 不起作用 [重复]【英文标题】:XElement with colon in the name doesn't work [duplicate] 【发布时间】:2014-05-08 16:24:54 【问题描述】:我正在尝试制作类似的东西:
new XElement("media:thumbnail", new XAttribute("width", ""))
但我不工作,因为冒号':'而出现错误。
有谁知道我该如何解决这个问题?
【问题讨论】:
【参考方案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,我做到了,但我的输入是media
作为您的命名空间URI,这几乎肯定是不正确的。仔细阅读我的回答,包括示例。
非常感谢以上是关于名称中带有冒号的 XElement 不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在hibernate和postgresql中读出名称中带有冒号(:)的列