我想使用XmlSerializer生成以下内容:
<atom:link href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" />
所以我试图给我的元素添加一个命名空间:
[...]
[XmlElement("link", Namespace="atom")]
public AtomLink AtomLink { get; set; }
[...]
但是输出是:
<link xmlns="atom" href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" />
那么生成前缀标签的正确方法是什么?
最佳答案
首先,原子 namespace 通常是这样的:
xmlns:atom="http://www.w3.org/2005/Atom"
为了使您的标记使用
atom
命名空间前缀,您需要使用它标记属性:[XmlElement("link", Namespace="http://www.w3.org/2005/Atom")]
public AtomLink AtomLink { get; set; }
您还需要告诉
XmlSerializer
使用它(感谢@Marc Gravell):XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("atom", "http://www.w3.org/2005/Atom");
XmlSerializer xser = new XmlSerializer(typeof(MyType));
xser.Serialize(Console.Out, new MyType(), ns);
关于c# - 如何使用XmlSerializer生成标签前缀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2810548/