2009-05-01 7 views
3

Ich versuche, eine Sitemap in einem ASP.NET MVC-Projekt zu erstellen.Wie füge ich ein bisschen XML in ein XDocument mit Visual Basic ein?

Dieser Code in meinem Node-Controller ...

Function Sitemap() As ContentResult 
    Dim db As New EfrDotOrgEntities 
    Dim Nodes = db.Node.ToList 
    Dim RequestUrl As Uri = Url.RequestContext.HttpContext.Request.Url 
    Dim AbsoluteRoot As String = String.Format("{0}://{1}", RequestUrl.Scheme, RequestUrl.Authority) 

    Dim map As XDocument = <?xml version="1.0" encoding="UTF-8"?> 
          <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
          </urlset> 
    For Each n As Node In Nodes 
     map.Add(<url> 
        <loc><%= AbsoluteRoot + Url.RouteUrl("IdOnly", New With {.id = n.Id}) %></loc> 
       </url>) 
    Next 
    Return Content(map.ToString, "text/xml", Encoding.UTF8) 
End Function 

(hier ist ein Bild, weil Stack-Überlauf nicht VB-Code und Farbe)

Visual Basic inline XML

... erzeugt diesen Fehler :

This operation would create an incorrectly structured document.

Es würde nicht wissen wh ere um diesen Inhalt hinzuzufügen.

Wie sage ich es, um dieses Bit von XML in die <urlset> einzufügen?

Antwort

5

Sie müssen es auf das oberste Ebene Element in dem Dokument hinzuzufügen (die Wurzel):

map.Root.Add(...) 
+0

Das funktioniert. Vielen Dank! –

+0

Ich kämpfte damit für eine Weile !! – MattGWagner

5

Warum es vollständig mit einem anderen xml wörtlichen Loch nicht ausfüllen?

Dim map As XDocument = <?xml version="1.0" encoding="UTF-8"?> 
         <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
          <%= From n In Nodes.Cast(Of Node)() _ 
           Select <url> 
              <loc><%= AbsoluteRoot + Url.RouteUrl("IdOnly", New With {.id = n.Id}) %></loc> 
             </url> %> 
         </urlset> 
+0

Das funktioniert. Vielen Dank! –

Verwandte Themen