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

发布于 2024-07-18 06:32:59 字数 1204 浏览 3 评论 0原文

我正在尝试在 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

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

Visual Basic 内联 XML

...产生此错误:

此操作将创建一个 文档结构不正确。

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

我如何告诉它将该部分 XML 插入到 中?

I'm trying to create a sitemap in an ASP.NET MVC project.

This code in my 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

(here's an image because Stack Overflow doesn't color VB code well)

Visual Basic inline XML

...produces this error:

This operation would create an
incorrectly structured document.

It wouldn't know where to add that content.

How do I tell it to insert that bit of XML into the <urlset>?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眉目亦如画i 2024-07-25 06:32:59

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

map.Root.Add(...)

You need to add it to the top level element in the document (the root):

map.Root.Add(...)
笑看君怀她人 2024-07-25 06:32:59

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

Why not fill it out completely with another xml literal hole?

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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文