Wie füge ich ein wenig von XML in ein XDocument Visual Basic?
-
03-07-2019 - |
Frage
Ich versuche, eine Sitemap in einem ASP.NET MVC-Projekt zu erstellen.
Dieser Code in meinen 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 Farbe VB-Code gut)
... erzeugt diese Fehler:
Diese Operation würde erstellen ein falsch strukturiertes Dokument.
Es würde nicht wissen, mit hinzuzufügen, dass der Inhalt.
Wie kann ich ihm sagen, dass etwas von XML in die <urlset>
einfügen?
Lösung
Sie müssen es auf das Element der obersten Ebene im Dokument hinzuzufügen (die Wurzel):
map.Root.Add(...)
Andere Tipps
Warum es nicht vollständig ausfüllen mit einem anderen XML-Literal Loch?
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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow