Как генерировать префиксы тегов, используя XmlSerializer - PullRequest
16 голосов
/ 11 мая 2010

Я хотел создать следующее с помощью 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" />

Итак, как правильно генерировать теги с префиксами?

Ответы [ 2 ]

35 голосов
/ 11 мая 2010

Во-первых, пространство имен атомов обычно таково:

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);
0 голосов
/ 11 мая 2010
...