【问题标题】:How do I insert a bit of XML into an XDocument using Visual Basic?如何使用 Visual Basic 在 XDocument 中插入一些 XML?
【发布时间】:2009-05-01 00:22:46
【问题描述】:

我正在尝试在 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 插入到 &lt;urlset&gt; 中?

【问题讨论】:

    标签: .net asp.net-mvc xml vb.net sitemap


    【解决方案1】:

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

    map.Root.Add(...)
    

    【讨论】:

    • 我为此苦苦挣扎了一段时间!!
    【解决方案2】:

    为什么不用另一个 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多