2012-08-10 136 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更高效。例如,由于该树是只读的,将节点排序为文档顺序可以更快;所以可以处理名称空间。 –