我有以下代碼。它工作正常,但加載需要很長時間,大約30秒。有什麼我可以做的,以縮短這一次。縮短xml文件加載時間
另外,我想搜索的XML文件與名稱以A,B,C ETX文件。我怎麼做?
非常感謝,
Dim xdoc As New XPathDocument(xt)
Dim nav As XPathNavigator = xdoc.CreateNavigator()
Dim expr As XPathExpression
expr = nav.Compile("/pf:CONTRACTS/pf:CONTRACT")
Dim namespaceManager As XmlNamespaceManager = New XmlNamespaceManager(nav.NameTable)
namespaceManager.AddNamespace("pf", "http://namespace/")
expr.SetContext(namespaceManager)
Dim nodes As XPathNodeIterator = nav.Select(expr)
If nodes.Count <> 0 Then
Dim tr As String = Nothing
For Each node As XPathNavigator In nodes
tr += "<td><a Target='_blank' href='http://www.urltosite.aspx?contract=" & node.SelectSingleNode("pf:ID", namespaceManager).Value & "'>" & node.SelectSingleNode("pf:NAME", namespaceManager).Value & "</a></td>"
For Each subNode2 As XPathNavigator In node.Select("pf:SUPPLIERS/pf:SUPPLIER", namespaceManager)
tr += "<td>" & subNode2.SelectSingleNode("pf:SUPPLIERNAME", namespaceManager).Value & "</td>"
Next
tr += "<td>" & node.SelectSingleNode("pf:ENDDATE", namespaceManager).Value & "</td>"
tr += "</tr>"
Next
Dim th As String = "<th width='50%'>Name</th><th width='30%'>Supplier</th><th width='20%'>End Date</th>"
div1.InnerHtml = ("<table width='96%' border='0' cellpadding='0' cellspacing='0' border='0' class='datatable1'>" & th) + tr & "</table>"
Else
div1.InnerHtml = "No results for your search"
End If
++ UPDATE ++
感謝您的幫助
我添加了一個StringBuilder我的代碼,而不是字符串連接。但是,性能並沒有改變,所以我認爲這個問題在別的地方。
我忘了我以前的XML數據我收到來自Web服務我耗費電子郵件提。有什麼我可以做的,以優化這種表現? 非常感謝
如果這是你要你的XML轉換的方式,你應該使用預先適當大小的'StringBuilder'代替'String'來執行所有這些並置。 – 2010-03-03 17:47:24
從Web服務獲取文件需要多長時間?如果需要29秒才能獲得文件,那麼需要1秒來執行此代碼,那麼問題不在於代碼。此外,如果您可以在1秒內針對本地文件副本運行此代碼,並且您可以在幾秒鐘內從服務器獲取文件,那麼先複製本地文件,然後解析本地副本。 – xcud 2010-03-04 21:53:43