2010-06-10 9 views
0

J'ai une interface qui charge une liste de documents en fonction de l'onglet cliqué par un utilisateur.Stringbuilder vs SQL pour la transformation XML/XSL

J'ai été récupérer les données par XML à partir d'une base de données SQL 2008 avec:

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

tranforming ensuite le XML avec une feuille de style XSLT. Tout fonctionne bien.

Pour améliorer l'expérience, j'essaie d'utiliser JQuery pour charger la liste des documents lorsqu'un utilisateur clique sur un onglet. J'allais retourner un morceau de html au client et remplacer le html de la div qui contient la liste des documents.

J'ai deux options, transformer le XML de SQL en HTML et retourner la chaîne résultante au client

ou

Oublier SQL XML et convertir un datable dans une chaîne HTML en utilisant stringbuilder comme :

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 

Quelqu'un at-il une meilleure façon de mettre en œuvre cela? Utilisation de Stringbuilder semble gagner sur SQL XML dans tous les tests que j'ai essayés.

Répondre