Stringbuilder и SQL FOR XML / XSL-преобразование - PullRequest
0 голосов
/ 10 июня 2010

У меня есть интерфейс, который загружает список документов в зависимости от вкладки, на которую нажал пользователь.

Я получаю данные через XML из базы данных SQL 2008 с:

SELECT col1, col2 col3 FROM documents WHERE typeId = 4 FOR XML PATH('doc'), ROOT('documents')

Затем преобразуйте XML с помощью таблицы стилей XSLT.Все работает нормально.

Чтобы улучшить работу, я пытаюсь использовать JQuery для загрузки списка документов при нажатии на вкладку.Я собирался вернуть клиенту кусок html и заменить html элемента div, который содержит список документов.

У меня есть несколько вариантов, преобразовать XML из SQL в HTML и вернуть полученный результат.строка для клиента

или

Забудьте о SQL XML и преобразуйте данные в строку HTML, используя Stringbuilder, например:

Dim _d As New Document
Dim dt As Data.DataTable = _d.GetDocuments(0, 0, 0, "2009", "")
Dim builder As New StringBuilder("<table><tr><td>Title1</td><td>Title2</td><td>Title3</td><td>Title4</td></tr>")
    For i = 0 To dt.Rows.Count - 1
        builder.Append("<tr><td>")
        builder.Append("<a href=""http://www.google.ie"" target=""_blank"">")
        builder.Append(dt.Rows(i).Item("documentTitle").ToString)
        builder.Append("</a></td>")
        builder.Append("<td>")
        builder.Append(dt.Rows(i).Item("documentTitle").ToString)
        builder.Append("</td>")
        builder.Append("<td>")
        builder.Append(dt.Rows(i).Item("documentTitle").ToString)
        builder.Append("</td>")
        builder.Append("<td>")
        builder.Append(dt.Rows(i).Item("documentTitle").ToString)
        builder.Append("</td></tr>")
    Next
builder.Append("</table>")
dt.Dispose()
_d = Nothing
Return builder.ToString

У кого-нибудь есть лучший способ реализацииthis?

Использование Stringbuilder, похоже, выигрывает у SQL XML во всех тестах, которые я пробовал.

1 Ответ

0 голосов
/ 15 июня 2010

Вопрос, возможно, не был достаточно ясным, нашел хороший artcile с информацией, которую я нашел здесь

...