【问题标题】:What is the difference between a SAX parser and XML Transformer in Java?Java 中的 SAX 解析器和 XML 转换器有什么区别?
【发布时间】:2012-09-05 14:58:51
【问题描述】:

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

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

【问题讨论】:

  • 嗯,其中一个用于解析,另一个用于转换,呵呵!因此,使用解析器,您需要自己进行转换。
  • “乌鸦怎么像写字台?(c)”我的意思是,解析器和转换器是两个不同的东西,有时可以用来实现相同的目标。
  • 但是有什么区别,你能用一个例子解释一下吗?

标签: java xml xslt dom sax


【解决方案1】:

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

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

我有点含糊其辞。您的 XML 转换器,但我假设您的意思是 XSLT。这是一个样式表转换,在更高级别上运行,将转换(样式表)应用于输入 XML 并给出输出(通常但不限于 XML)

编辑:根据您的评论,请参阅this article

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

【讨论】:

  • 他可能是指xml transformer
  • 我的意思是我可以从 SAXTransformerFactory 得到的变压器
  • @Phoenix - 查看我修改后的答案
【解决方案2】:

比较:

何时使用 SAXhttp://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。

【讨论】:

    猜你喜欢
    • 2012-07-03
    • 2014-01-27
    • 1970-01-01
    • 2017-08-19
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多