2010-09-27 7 views
15

Wydaje się, że otrzymuję ten błąd, jak mogę rozwiązać ten kod poniżej.Pomoc: Przedrostek "" nie może zostać ponownie zdefiniowany od "" do "http://www.sitemaps.org/schemas/sitemap/0.9" w obrębie tego samego tagu elementu startowego

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

W XML QNames są krotki (lokalna nazwa, prefiks, nazw URI). Nie powinieneś więc wyprowadzać tego elementu (urlset, '', ''), a po tym wyjściu domyślną deklarację przestrzeni nazw. To jest twój element bez przestrzeni nazw lub pod jakimś obszarem nazw? –

Odpowiedz

14

Spróbuj tego:

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

Więc zasadniczo, jeśli chcesz ustawić atrybut 'xmlns' elementu, zrób to za pomocą drugiego argumentu' WriteStartElement' zamiast 'WriteAttributeString'. – cdmckay

+0

Krótka odpowiedź tak. Ale tak naprawdę chodzi o to, że określasz przestrzeń nazw dla wszystkich swoich elementów. A jeśli używałeś innej przestrzeni nazw dla różnych elementów, myślę, że otrzymasz różne deklaracje xmlns. – Markis

Powiązane problemy