2010-09-27 7 views
15

Ich habe diesen Fehler zu bekommen, wie kann ich lösen dies, Code unten.Hilfe: Das Präfix '' kann nicht neu definiert werden von '' zu 'http://www.sitemaps.org/schemas/sitemap/0.9' innerhalb des gleichen Start-Element-Tags

Dim writer As XmlWriter = XmlWriter.Create(FileLocation + "StaticUrls3.xml") 
    Dim urlList As New List(Of String) 

    urlList.Add("link1") 
    urlList.Add("link2") 
    urlList.Add("link3")  

    writer.WriteStartDocument() 
    writer.WriteStartElement("urlset") 
    writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9") 

    For Each aUrl As String In urlList 
     writer.WriteStartElement("url") 
     writer.WriteElementString("loc", aUrl) 
     writer.WriteEndElement() 
    Next 

    writer.WriteEndElement() 
    writer.WriteEndDocument() 
    writer.Close() 
+1

In XML QNames sind Tupel (lokaler Name, Präfix, NamespaceURI). Daher sollten Sie dieses Element (urlset, '', '') nicht ausgeben und danach eine Standard-Namespace-Deklaration ausgeben. Es ist dein Element unter keinem Namespace oder unter einem Namespace? –

Antwort

14

Try this:

Const siteMapNamespace As String = "http://www.sitemaps.org/schemas/sitemap/0.9" 
Dim writer As XmlWriter = XmlWriter.Create(FileLocation + "StaticUrls3.xml") 
Dim urlList As New List(Of String) 

urlList.Add("link1") 
urlList.Add("link2") 
urlList.Add("link3")  

writer.WriteStartDocument() 
writer.WriteStartElement("urlset", siteMapNamespace) 

For Each aUrl As String In urlList 
    writer.WriteStartElement("url", siteMapNamespace) 
    writer.WriteElementString("loc", aUrl) 
    writer.WriteEndElement() 
Next 

writer.WriteEndElement() 
writer.WriteEndDocument() 
writer.Close() 
+8

Also, im Wesentlichen, wenn Sie das 'xmlns' Attribut eines Elements setzen möchten, tun Sie es über das zweite Argument von' WriteStartElement' anstelle von 'WriteAttributeString'. – cdmckay

+0

Kurze Antwort ja. Aber was wirklich los ist, ist, dass Sie einen Namespace für alle Ihre Elemente angeben. Und wenn Sie einen anderen Namespace für verschiedene Elemente verwenden, denke ich, dass Sie unterschiedliche xmlns-Deklarationen erhalten würden. – Markis