我有以下列格式的XML文檔:最快XPath表達式:value-of的
<Contents>
<Content Name="ClientXML">
<EntityData>
<Data Name="EQ_EligibleForGuaranteedIssue">Yes</Data>
<Data Name="ABRInd">NO</Data>
<Data Name="AC_AgentNo">12345</Data>
<Data Name="AC_AgentPersonallyMetWithApplicant">Has</Data>
<Data Name="AC_City">Pomona</Data>
<Data Name="AC_FirstName">Kimmy</Data>
<Data Name="AC_FullName">Kimmy N Jackson</Data>
<Data Name="AC_Initials">K J</Data>
<Data Name="AC_LastAndSuf">Jackson</Data>
...
</EntityData>
</Content>
<Content Name="UserXML">
<EntityData>
<Data Name="TransRefGUID">789-456-123456789-456</Data>
...
</EntityData>
</Content>
</Contents>
其他信息:
- 可以有下的每個幾千 '數據' 節點' EntityData'對象
- 任何「名稱」屬性的值都不會重複。
我必須創建一個XSL轉換,並使用xsl:value-select =「...」函數。我的問題是,什麼XPath表達式將執行最快?例如
<xsl:value-of select="\\Contents\Content[@Name="ClientXML"\EntityData\Data[@Name=".."]">
或者乾脆
<xsl:value-of select="\\Data[@Name=".."]">
我沒有訪問到高端服務器,這將最終運行這個過程,並在本地第二個選項可能會出現快一點。
想知道如果任何人有意見,並在更大的規模,如果一個可能會更快。
謝謝!
這個迴應確實是最快的。但是,如果有一個情況下,你正在使用select = XSL功能的價值,我是能夠運行一個測試: 的完整路徑:/內容/內容[@名稱=「ClientXML」]/EntityData /數據[@名稱= $名稱] 比短路徑要快得多: //數據[@名稱= $名稱] –
沒錯。這是我的觀點。 ''//可能會很慢。這是因爲您要求處理器在文檔中的任何位置都查找正在處理的項目,並且處理器在找到您正在查找的項目時不知道要停止。然而,當你清楚完整的XPath地址時,處理器不會在別處尋找不必要的東西。因此,您的較長表達式執行得更快。畢竟,我們應該花費額外的時間來快速完成代碼,而不是不必要地使用快捷方式。 –