2009-03-05 13 views
3

Xml Serialization ile birlikte XmlWriter kullanıyorum. Ben XML çıktı verebilirim, ama xmlns özniteliğini XmlWriter ile nasıl ekleyeceğimi bana kaçıyor gibi görünüyor. Benim XmlWriter SitemapNodes aracılığıyla I sonra döngü yarattı ileXmlWriter ile XmlSerialization yaparken nasıl bir ad alanı eklerim?

Writer.WriteStartDocument(); 
    Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9"); 

böyle serileştirme aracılığıyla onları yaratan ve altta yatan StringBuilder bunları yazmak adres:

aşağıdaki kullanmak belgenin başlangıç ​​yazmak için

foreach (uk.co.andrewrea.SitemapNode node in List) 
    { 
     Serializer.Serialize(Writer, node); 
    } 

Bunun iyi çalıştığını söylediğim gibi AMA kök öğesi için yukarıdaki ad alanı dahil edilmemiştir. Fiziksel olarak özniteliği yazmayı denediğimde xmlns, xmlns'in XML kullanımı için sistem tarafından ayrıldığına dair bir istisna alıyorum, bu yüzden temelde kullanamıyorum.

XmlTextWriter kullanarak ve XmlDocument sınıfını kullanarak bunu nasıl yapacağımı biliyorum ama bunu XmlWriter ve Serileştirme aracılığıyla nasıl gerçekleştirdiğimi anlamanız gerekiyor.

Aşağıdaki girişimde, söz konusu ad alanı hakkında ayrılan istisnalar da bulunmaktadır. Eğer kod üzerinde kontrol sahibi olmadığını

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. 
+0

Başlığı bir etiket alanı gibi kullanmayın. "XmlWriter ile XmlSerialization yaparken nasıl bir ad alanı eklerim?" – cjk

cevap

4

Sen .:, XmlSerialization özelliklerine

[XmlElement(
ElementName = "Members", 
Namespace = "http://www.cpandl.com")] 
public Employee[] Employees; 

örneğin ad ekleyebilir.

+0

Şimdi bunu ekledim, ancak yine de öznitelik çıktı değil. –

+0

Doğru DUMB yapıyorum, çıktıyı firefox'da görüntülüyordum, WHICH bu koşulları gizler. Kaynağı görüntülemek, orjinal kodumun gerçekten iyi çalıştığını gösterdi. :-(Yardım ettiğin için teşekkür ederim. –