如何使用Visual Basic将一些XML插入到XDocument中?
-
03-07-2019 - |
题
我正在尝试在ASP.NET MVC项目中创建站点地图。
我的节点控制器中的代码......
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
(这是一个图像因为Stack Overflow没有很好地为VB代码着色)
...产生此错误:
此操作会创建一个 结构不正确的文件。
它不会知道在哪里添加该内容。
如何告诉它将这一部分XML插入<urlset>
?
解决方案
您需要将其添加到文档中的顶级元素(根):
map.Root.Add(...)
其他提示
为什么不用另一个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>
不隶属于 StackOverflow