Visual Basic을 사용하여 약간의 XML을 XDocument에 삽입하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/809706

문제

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

(스택 오버플로가 VB 코드를 잘 색상하지 않기 때문에 이미지가 있습니다)

Visual Basic inline XML

...이 오류를 생성합니다.

이 작업은 잘못 구조화 된 문서를 만듭니다.

알지 못할 것입니다 어디 그 내용을 추가하려면.

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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top