2010-08-05 3 views
0

Так что я получил наше наследие приложение, которое является классическим осина и у меня есть таблица, которая выглядит следующим образом:Чтение Xml Строка из БД в классическом 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>[email protected]</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:

[email protected] 

Излишне говорить, что я хотел бы строку XML обратно. У меня есть теория, что xml-тег «» является проблемой.

Просто для того, чтобы покрыть любые другие допущения, я нахожусь на MSSQL 2008 & IIS7.

Любые идеи? Любая помощь приветствуется.

+0

Похоже, вы пропускаете все теги XML и видите только текстовые узлы - вы просматриваете это в браузере как HTML? Вы сделали источник просмотра, чтобы узнать, действительно ли вы получаете текстовые узлы? – Oded

+0

Вы уверены, что не вернете свою полную строку. Response.Write может отправлять его с кодировкой HTML, поэтому теги могут быть там, просто не видны, потому что они не распознаются браузером. –

+0

ahh cr4p. Да, это было правильно с самого начала. Наверное, мне нужна вторая пара (или третья) пара глаз. Спасибо, ребята, –

ответ

2

Я бы предположил, что вы действительно получаете XML правильно.

Что вы, вероятно, делаете, это вывод его непосредственно на страницу, ожидая, что он будет отображаться напрямую.

Вы можете HTMLEncode ваш XML для того, чтобы он появился на странице:

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

это работало с копией и вставкой, поэтому он получил галочку –

1

В качестве альтернативы, вы можете сделать следующее.

Response.ContentType = "text/xml" 
Response.Write(rs("XmlData") 
Смежные вопросы