0

我在一篇技术论文中读到,使用 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 被认为更可取和更有效。

4

2 回答 2

6

效率是一个透视的概念......

一个好的 XSLT 转换文档可能非常小,并且需要一个有经验的“XSLT 专家”几分钟的时间来整理。从“发展”的角度来看,这将是非常有效的。

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

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

所以,我会挑战你的“技术论文”的结论。在许多情况下,XSLT 比其他解决方案“更受欢迎”,因为它(对于专家)更容易维护、更改等。但至于“效率”,技术论文必须首先定义它的含义。

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

罗尔夫

于 2012-08-10T12:54:55.310 回答
5

对于许多小的转换,成本主要由解析和序列化决定,与转换逻辑是用 XSLT 还是 Java 编写的无关。(所以用 XSLT 编写它,因为这样工作量少)。

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

于 2012-08-10T17:14:29.860 回答