Как создать префиксы тегов с помощью XmlSerializer
Я хотел бы сгенерировать следующее с помощью XmlSerializer:
<atom:link href="#" onclick="location.href='http://dallas.example.com/rss.xml'; return false;" rel="self" type="application/rss+xml" />
Итак, я попытался добавить пространство имен в свой элемент:
[...]
[XmlElement("link", Namespace="atom")]
public AtomLink AtomLink { get; set; }
[...]
Но выход:
<link xmlns="atom" href="#" onclick="location.href='http://dallas.example.com/rss.xml'; return false;" rel="self" type="application/rss+xml" />
Итак, каков правильный способ генерации префиксных тегов?
Ответы
Ответ 1
Прежде всего, пространство имен атомов обычно равно:
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);
Ответ 2
Посмотрите Xml Сериализация и префиксы пространства имен