Como faço para inserir um pouco de XML em um XDocument usando o Visual Basic?
-
03-07-2019 - |
Pergunta
Eu estou tentando criar um mapa do site em um projeto ASP.NET MVC.
Este código no meu nó do controlador ...
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
(aqui está uma imagem por causa de estouro de pilha não cor código VB bem)
... produz este erro:
Esta operação criaria um estruturada de forma incorrecta do documento.
Não saberia , onde para adicionar esse conteúdo.
Como posso dizer-lhe para inserir esse pouco de XML para o <urlset>
?
Solução
Você precisa adicioná-lo ao elemento de nível superior no documento (a raiz):
map.Root.Add(...)
Outras dicas
Por que não preenchê-lo completamente com outro buraco literal xml?
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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow