栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java中的高效XSLT管道(或将结果重定向到源)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的高效XSLT管道(或将结果重定向到源)

我发现了:#3。链接转换,显示了两种使用 TransformerFactory
链接转换的
方法,一次转换的结果将馈入下一个转换,然后最终输出到系统。这避免了在转换之间对字符串,文件等进行中间序列化的需要。

当同一XML文档需要进行多次连续转换时,请确保避免不必要的解析操作。我经常碰到将一个字符串转换为另一个字符串,然后将该字符串转换为另一个字符串的代码。这不仅速度很慢,而且还会消耗大量内存,尤其是在不允许对中间字符串进行垃圾回收的情况下。

大多数转换基于一系列SAX事件。SAX解析器通常会将一个InputStream或另一个InputSource解析为SAX事件,然后可以将其提供给Transformer。除了将Transformer输出到File,String或另一个此类Result之外,还可以使用SAXResult。SAXResult接受ContentHandler,它可以将这些SAX事件直接传递到另一个Transformer等。

这是一种方法,我通常喜欢这种方法,因为它为各种输入和输出源提供了更大的灵活性。它还使动态创建具有可变数量的转换的转换链变得相当容易。

SAXTransformerFactory stf =

(SAXTransformerFactory)TransformerFactory.newInstance();

// These templates objects could be reused and obtained from elsewhere.Templates templates1 = stf.newTemplates(new StreamSource(  getClass().getResourceAsStream("MyStylesheet1.xslt")));Templates templates2 = stf.newTemplates(new StreamSource(  getClass().getResourceAsStream("MyStylesheet1.xslt")));TransformerHandler th1 = stf.newTransformerHandler(templates1);TransformerHandler th2 = stf.newTransformerHandler(templates2);th1.setResult(new SAXResult(th2));th2.setResult(new StreamResult(System.out));Transformer t = stf.newTransformer();t.transform(new StreamSource(System.in), new SAXResult(th1));// th1 feeds th2, which in turn feeds System.out.


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437785.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号