Я хотел генерировать следующее использование 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" />
Таким образом, что корректный путь состоит в том, чтобы генерировать снабженные префиксом теги?
Во-первых, пространство имен атома обычно выглядит следующим образом:
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);
Посмотрите на Сериализацию Xml и префиксы пространств имен