所以我還是問的問題關於這個主題:-(XML序列化後,取下空的xmlns =「」
所以我創建了一個對象,與XML序列化屬性裝飾它,從我所看到的我添加空命名空間的XML序列化namepsace集合,以免讓多餘的屬性,我不打算有
編輯:我說的屬性是這些:
<url xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns="">
所以它給了我兩個額外屬性。
經過進一步調查,如果我改變文檔的開頭來源:**
writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");
到
writer.WriteStartElement("urlset");
**然後,我沒有得到空的xmlns =「」屬性的url標籤。這是偉大的,但我確實需要的根元素有xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
,即:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
但我仍然得到的序列化類型的空xmlns=""
屬性。
[XmlRoot(ElementName = "url", Namespace="")]
public class SitemapNode
{
[XmlElement(ElementName = "loc")]
public string Location { get; set; }
[XmlElement(ElementName = "lastmod")]
public DateTime LastModified { get; set; }
[XmlElement(ElementName = "changefreq")]
public SitemapChangeFrequency ChangeFrequency { get; set; }
[XmlElement(ElementName = "priority")]
public decimal Priority { get; set; }
public SitemapNode()
{
Location = String.Empty;
LastModified = DateTime.Now;
ChangeFrequency = SitemapChangeFrequency.monthly;
Priority = 0.5M;
}
public SitemapNode(string location, DateTime lastModified, SitemapChangeFrequency changeFrequency, decimal priority)
{
Location = location;
LastModified = lastModified;
ChangeFrequency = changeFrequency;
Priority = priority;
}
}
然後我用下面的追加到我的XmlWriter:
foreach (uk.co.andrewrea.SitemapNode node in List)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(String.Empty, String.Empty);
Serializer.Serialize(Writer, node, ns);
}
這工作了罰款只是我留下的emtpy的xmlns = 「」 像這樣
<url xmlns="">
任何人有任何想法嗎?我可以再次使用XmlTextWriter和XmlDocument來實現這一點,但我需要使用XmlWriter來實現它。
任何幫助,非常感謝。
>我爲xml序列化namepsace集合添加一個空的名稱空間,以免得到我不打算擁有的多餘屬性。 你能詳細說明一下嗎?多餘的屬性意味着什麼? – jro 2009-03-05 19:55:56