在Classic Asp中从DB读取Xml字符串 - 奇数返回

时间:2010-08-05 18:56:07

标签: xml asp-classic

所以我有我们的传统应用程序,这是经典的asp,我有一个看起来像这样的表:

CREATE TABLE ChangeRequests(
ChangeRequestsId int IDENTITY(1,1) NOT NULL,
XmlData nvarchar(max) NOT NULL)

当然“XmlData”中有xml。 Xml字符串如下所示:

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfControlData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ControlData>
    <Name>Email</Name>
    <Value>hosehead@bugger.com</Value>
  </ControlData>
  <ControlData>
    <Name>PreferredLanguage</Name>
    <Value>English</Value>
  </ControlData>
</ArrayOfControlData>

所以当我做其中一个时:

select XmlData from ChangeRequests

我希望得到上面的字符串。以下是我使用的一些代码,我希望得到以下结果:

Set rs = Server.CreateObject("ADODB.recordset")
rs.Open "select XmlData from ChangeRequests", Conn

rs.MoveFirst
Response.Write rs("XmlData") & "<br />"

我得到的结果就是这个cr4p:

Emailhosehead@bugger.comPreferredLanguageEnglish

毋庸置疑,我想要回复xml字符串。我有一个理论认为xml标签“”是个问题。

为了涵盖所做的任何其他假设,我正在使用MSSQL 2008&amp; IIS7。

有什么想法吗?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

我猜你实际上是在正确地获取XML。

您可能正在做的是直接将其输出到页面,期望它直接呈现。

您可以HTMLEncode XML以使其显示在页面上:

Response.Write Server.HTMLEncode(rs("XmlData")) & "<br />"

答案 1 :(得分:1)

或者,您可以执行以下操作。

Response.ContentType = "text/xml"
Response.Write(rs("XmlData")