Java中的SAX解析器和XML Transformer有什么区别?

时间:2012-09-05 14:58:51

标签: java xml xslt dom sax

我可以使用SAX解析器或Transformer实现XML从一种格式到另一种格式的转换吗?如果是这样,那么确切的区别是什么?

编辑::我的意思是我使用SAXTransformerFactory创建的变换器

2 个答案:

答案 0 :(得分:2)

SAX解析器允许您在Java中解析 XML文档。它将为每个元素,字符序列等回调您,并使用它可以构造一个表示部分/全部XML的对象树,或执行其他一些功能。

存在其他类型的解析器。 DOM解析器将为您提供XML文档的基于树的对象表示。这是每个解析器类型的优点/缺点(DOM通常被描述为更多内存密集型,但提供完整的XML模型,而SAX是轻量级的,但您被解析器本身回调,无法导航任何模型的XML)

我有点模糊。您的XML Transformer,但我认为您的意思是XSLT。这是一个样式表转换,并在更高层次上运行,将转换(样式表)应用于输入XML并提供输出(通常但不限于XML)

编辑:发表评论后,请参阅this article

  

最后,您可能希望将xml文档写入字符串或   一个文件,这可以用来自的Transformer对象来完成   变压器厂

答案 1 :(得分:0)

比较

何时使用SAX http://docs.oracle.com/javase/tutorial/jaxp/sax/when.html  和

何时使用DOM: http://docs.oracle.com/javase/tutorial/jaxp/dom/when.html

另请参阅:http://docs.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html

我相信SAX将用于基于事件的XML读取和写入,Transformer将用于操作已解析的XML。