使用XDocument在浏览器中渲染XML

时间:2014-05-20 19:32:03

标签: .net vb.net linq-to-xml

我正在使用以下代码

创建XML文件
Private Sub GetXML As XDocument
Dim XD As XDocument = <?xml version="1.0" encoding="UTF-8"><Customers></Customers>

For each c in mycustomers
 XD.Root.Add(<Customer>.....</Customer>
Next
End Function

我正在尝试使用XD对象来显示在浏览器中生成的XML。所以我开始使用生成XML的Save方法来查看是否存在任何问题 - 文件看起来是正确的。所以我添加以下声明

    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    Response.ContentType = "application/xml"
    Literal1.Text =  GetXML.ToString
    Response.Flush()
    Response.End()

这不会在浏览器中生成XML(创建文件时Save函数生成它的方式),所以进一步阅读会让我添加行

XD.Save(Response.write)

在浏览器窗口中显示XML,但没有显示导致我相信我仍然做错事的声明。然后我将此行更改为

Literal1.Text = "<?xml version=""1.0"" encoding=""utf-8"" ?>" & GetXML.ToString

这再次起作用。虽然我对Linq to XML的新功能似乎无法让这个按照我想要的方式工作吗?

修改

我刚试过

    Dim wr As New StringWriter
....
    XD.Save(wr)

    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    Response.ContentType = "application/xml"
    Response.Write(wr.GetStringBuilder.ToString)

再次显示XML但没有声明.....

1 个答案:

答案 0 :(得分:0)

使用XDeclaration在XML文档中包含声明。

Dim doc = New XDocument(New XDeclaration("1.0", "utf-16", "no"), New XElement("Customer", "..."))
Dim sw = New StringWriter()
doc.Save(sw)
Console.Write(sw.GetStringBuilder().ToString())