2012-08-10 91 views
0

我讀過一篇技術文章,指出使用XSLT在XML文件中進行修改比使用XML解析器如DOM更爲高效和可取, JDOM,SAX,JSoup等等。所以我想知道XSLT比XML解析器更有效並且更好用。 (XSLT是否提供更廣泛和更簡單的解決方案?) 感謝您。比較效率:XSLT與XML-解析從XML到XML轉換

如: 如果我有一個XML文件:

<node1> 
<node2> TEXT </node2> 
</node1> 

,我需要輸出爲:

<node1> 
<node2> TEXT </node2> 
<script src="xyz.js"></srcipt> 
</node> 

然後要麼我可以寫一個XSLT此獲得所需的輸出或者我可以使用XML解析器(DOM,SAX等)編寫一個Java程序,將所需的元素插入到所需的位置並獲得所需的輸出。所以爲此我已經讀過XSLT被認爲更可取和更有效。

+1

XML解析器不執行任何轉換。因此,我們不能說XSLT處理器比XML解析器的效率更高或更低。請編輯問題並使其有意義。 –

+0

@Dimtre感謝您的評論。我編輯了我的問題,請看看。 – RahulD

+0

@DimitreNovatchev感謝您的評論。我編輯了我的問題,請看看。 – RahulD

回答

4

對於許多小的變革,成本通過解析,系列化爲主,是獨立的轉換邏輯是否是用XSLT或Java。 (所以把它寫在XSLT中,因爲那樣做工作較少)。

如果轉換變得更加複雜,那麼聰明的Java程序員可能會勝過XSLT引擎,但普通的Java程序員不會。好吧,你知道你很聰明。但平均而言,你可能是平均水平。

6

效率爲視角的概念....

一個很好的XSLT轉換的文件可能是非常小的,並會採取一個經驗豐富的「XSLT專家」幾分鐘的時間放在一起。從'發展'的角度來看,這將是非常有效的。

就CPU週期而言,XSLT選項不可能是最有效的。

該過程的一個好的'直接'(DOM/JDOM/SAX/whatever)編程將比XSLT更快,甚至更快,但將是一個非基於XML的過程...(如'sed'或'awk的')。

所以,我會質疑你的'技術論文'的結論。在許多情況下,XSLT對於其他解決方案是「可取的」,因爲對於專家來說更容易維護,更改等。但就「效率」而言,技術文件必須首先明確它的含義。

底線是XSLT位於某個XML模型(SAX/DOM/JDOM/etc)的頂部,因此它永遠不會像原始模型那樣高效....然後所有XML模型的效率都很低,如果你也擺脫了這一層。

羅爾夫

+0

感謝您的回答(+1)。在他們的模型中,他們只使用解析器,但在將來的工作中,他們提到'使用更高效和更可取的方法XSLT'。 – RahulD

+2

從分析中遺漏的一件事是,XSLT引擎將使用針對XSLT處理進行優化的XML樹表示,這可能比通用DOM更高效。例如,由於該樹是隻讀的,將節點排序爲文檔順序可以更快;所以可以處理名稱空間。 –