我將XmlWriter與Xml Serialization結合使用。我能夠輸出XML,但是如何使用XmlWriter包含xmlns屬性似乎正在逃避我。如何在使用XmlWriter進行XmlSerialization的同時添加命名空間?
要寫入我用下面的文檔的開始:
Writer.WriteStartDocument();
Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");
用我的XmlWriter創建我通過SitemapNodes然後循環我有這樣創造了它們,並將它們寫入底層的StringBuilder通過系列化:
foreach (uk.co.andrewrea.SitemapNode node in List)
{
Serializer.Serialize(Writer, node);
}
正如我所說,這工作正常,但根元素的上述命名空間不包括在內。每次我嘗試物理寫入屬性xmlns時,我都會得到xmlns被系統保留以供XML使用的異常,所以基本上我不能使用。
我知道如何做到這一點使用XmlTextWriter,也使用XmlDocument類,但我需要了解如何使用XmlWriter和通過序列化來實現這一點。
以下嘗試還會引發有關該名稱空間被保留的異常。
foreach (uk.co.andrewrea.SitemapNode node in List)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
Serializer.Serialize(Writer, node, ns);
}
Exception Details: System.ArgumentException: Prefix "xmlns" is reserved for use by XML.
請勿使用標題字段之類的標題。例如「如何在使用XmlWriter進行XmlSerialization時添加命名空間?」 – cjk 2009-03-05 12:56:14