我有以下的实现任务,我不知道如何解决它。
我们有一个基于SAX的语法检查器,用于在关闭的endElement()中检查哈希和。这个hashsum是使用一种筛选InputStream构建的,它在读取内容时更新MessageDigest。SAX-同步检查器使用这个输入流作为它的InputSource。
问题(我的任务)是,hashsum应该构建在输入xml的一些规范化部分上(参见http://www.w3.org/TR/xml-c14n)。
现在,棘手的事情是:我们有一个规范化器,它也使用SAX来规范输入。(它需要知道当前的上下文来区分属性和节点等,这就是我们使用SAX的原因)
我想重用这个Canonicalizer,但我看不出如何将这两个SAX解析器组合起来。
我想我想要一种流水线:
InputFile -> Canonicalizer -> HashCalculation-InputStream -> SyntaxChecker.
有什么想法/参考如何做到这一点?蒂娅。
发布于 2011-11-14 10:05:51
由于哈希计算从输入流中读取,规范化的结果最终必须显示为输入流。您可以使用连接到PipedInputStream的PipedOutputStream,或者使用临时字节数组上的一对ByteArrayOutputStream / ByteArrayInputStream。
相反,如果这两个组件的设计考虑到管道衬里,您可以使用org.xml.sax.XmlFilter将规范化程序中的事件与哈希计算/语法检查器的处理程序连接起来。
https://stackoverflow.com/questions/8118899
复制相似问题