如何使用 SAX 处理程序分析 JAVA DOM 文档?
How to analyze a JAVA DOM Document using a SAX handler?
我将在我的代码中编写一个新功能,以 memory/CPU-efficient 的方式处理一些 XML 数据。它主要分析文件、流、字节数组等数据,所以SAXParser似乎符合上述所有要求。
不幸的是,这个新功能还需要分析一些 XML 数据,这些数据是由使用 DOM 解决方案和 returns 文档 类 的旧代码生成的。
当然我可以将DOM文档保存到file/stream/byte数组等,然后使用SAXParser来处理它,但是这样的解决方案需要额外的内存space来保存从数据处理的角度来看完全不需要的数据。
因此,我正在寻找某种 DOM 文档爬虫,它读取已经存在的 DOM 数据,但使用 SAX 处理程序来处理它,这将允许我实现基本的处理逻辑在我的自定义 SAX 处理程序中只使用一次并且还使用任何类型的输入数据。
你遇到过这样的事情吗?
您使用身份转换将 XML 从 DOM 树提供给 SAX 处理程序:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document),
new SAXResult(handler));
DOMSource
constructor takes a Node
,所以你可以只给它一个 DOM 文档的一部分,即 片段 .
SAXResult
constructor takes the ContentHandler
that you would normally give to the XMLReader
in the setContentHandler(...)
调用。
我将在我的代码中编写一个新功能,以 memory/CPU-efficient 的方式处理一些 XML 数据。它主要分析文件、流、字节数组等数据,所以SAXParser似乎符合上述所有要求。
不幸的是,这个新功能还需要分析一些 XML 数据,这些数据是由使用 DOM 解决方案和 returns 文档 类 的旧代码生成的。
当然我可以将DOM文档保存到file/stream/byte数组等,然后使用SAXParser来处理它,但是这样的解决方案需要额外的内存space来保存从数据处理的角度来看完全不需要的数据。
因此,我正在寻找某种 DOM 文档爬虫,它读取已经存在的 DOM 数据,但使用 SAX 处理程序来处理它,这将允许我实现基本的处理逻辑在我的自定义 SAX 处理程序中只使用一次并且还使用任何类型的输入数据。
你遇到过这样的事情吗?
您使用身份转换将 XML 从 DOM 树提供给 SAX 处理程序:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document),
new SAXResult(handler));
DOMSource
constructor takes a Node
,所以你可以只给它一个 DOM 文档的一部分,即 片段 .
SAXResult
constructor takes the ContentHandler
that you would normally give to the XMLReader
in the setContentHandler(...)
调用。