如何使用Visual Basic将一些XML插入到XDocument中?

Zac*_*son 3 .net xml vb.net sitemap asp.net-mvc

我正在尝试在ASP.NET MVC项目中创建站点地图.

我的Node控制器中的代码...

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
Run Code Online (Sandbox Code Playgroud)

(这是一个图像因为Stack Overflow没有很好地为VB代码着色)

Visual Basic内联XML

...产生此错误:

此操作将创建结构不正确的文档.

它不知道在哪里添加该内容.

如何告诉它将XML插入<urlset>

Erv*_*ter 5

您需要将它添加到文档中的顶级元素(根):

map.Root.Add(...)
Run Code Online (Sandbox Code Playgroud)


Jar*_*Par 5

为什么不用另一个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>
Run Code Online (Sandbox Code Playgroud)