比较效率:XSLT 与 XML 解析从 XML 转换为 XML



我在一篇技术论文中读到,使用XSLT在XML文件中进行修改比使用XML解析器(如DOM,JDOM,SAX,JSoup等)更有效,更可取。 因此,我想知道XSLT在哪些参数上比XML解析器更有效,更可取。(XSLT 是否提供更通用、更简单的解决方案?谢谢你。

例如:如果我有一个 XML 文件:

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

我需要输出为:

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

然后,我可以为此编写一个XSLT来获得所需的输出,或者我可以使用XML解析器(DOM,SAX等)编写Java程序以将所需的元素插入所需的位置并获得所需的输出。因此,为此,我读到XSLT被认为更可取和有效。

效率是一个透视的概念。

一个好的 XSLT 转换文档可能非常小,需要有经验的"XSLT 专家"花一些时间来整理。从"发展"的角度来看,这将是非常有效的。

但是,就 CPU 周期而言,XSLT 选项不太可能是最有效的。

一个好的"直接"(DOM/JDOM/SAX/whatever)进程编程将比XSLT更快,甚至更快,但它是一个非基于XML的进程。(如"sed"或"awk")。

因此,我会挑战您的"技术论文"的结论。 在许多情况下,XSLT 比其他解决方案"更可取",因为它(对于专家而言)更容易维护、更改等。但至于"效率",技术文件必须首先定义它的含义。

底线是XSLT位于某些XML模型(SAX/DOM/JDOM/等)之上,因此它永远不会像原始模型那样高效。然后所有的XML模型都有效率低下,如果你也去掉了那一层。

罗尔夫

对于许多小型转换,成本由解析和序列化主导,并且与转换逻辑是用 XSLT 还是 Java 编写无关。(所以用 XSLT 编写它,因为那样工作量更少)。

如果转换变得更加复杂,那么聪明的Java程序员可能会胜过XSLT引擎,但普通的Java程序员不会。好吧,你知道你很聪明。但平均而言,你可能很平均。

最新更新