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" />
では、プレフィックス付きタグを生成する正しい方法は何ですか?
まず、atom名前空間は通常これです:
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シリアル化と名前空間プレフィックス を見てください