1

我有以下实现任务,我不知道如何解决它。

我们有一个基于 SAX的 xml 格式语法检查器,它检查某个结束 endElement() 中的哈希和。这个hashsum是使用一种过滤 InputStream构建的,它在读取内容时更新 MessageDigest。SAX-syntaxchecker 使用这个输入流作为它的 InputSource。

问题(我的任务)是,hashsum 应该建立在输入 xml 的一些规范化部分上(参见http://www.w3.org/TR/xml-c14n)。

现在棘手的事情是:我们有一个Canonicalizer,它也使用 SAX来规范化输入。(它需要知道当前上下文来区分属性和节点等,这就是我们使用 SAX 的原因)

我想重用那个 Canonicalizer,但我看不出如何组合这两个 SAX 解析器。

我想我想要某种流水线:

InputFile -> Canonicalizer -> HashCalculation-InputStream -> SyntaxChecker。

任何想法/参考如何做到这一点?TIA。

4

1 回答 1

0

由于哈希计算是从输入流中读取的,因此规范化的结果最终必须以输入流的形式呈现。您可以使用连接到 PipedOutputStream 的 PipedInputStream,或者在临时字节数组上使用一对 ByteArrayOutputStream / ByteArrayInputStream。

相反,如果这两个组件在设计时考虑了管道衬里,您可以使用 anorg.xml.sax.XmlFilter将来自规范化程序的事件与哈希计算/语法检查器的处理程序连接起来

于 2011-11-14T10:05:51.647 回答