gpt4 book ai didi

java - 创建一个对读取操作线程安全的 DOM

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:26 25 4
gpt4 key购买 nike

我的应用程序从多个 xml 源组成一个网页模型。使用普通的 Xerces 解析器将这些源作为 DOM 对象解析到内存中。不幸的是,Xerces DOM 对象对于只读操作不是线程安全的。我希望能够重用已解析的 DOM 进行读取。有谁知道我使用的另一个解析器或简单的线程安全读取 DOM 实现?

最佳答案

Saxon 为其内部和不可变数据结构提供 DOM 包装器。

// create Saxon IdentityTransformer
final Transformer transformer = new TransformerFactoryImpl().newTransformer();

// set up holder for the output
final TinyBuilder outputTarget = new TinyBuilder(
new PipelineConfiguration(new Configuration()));

// transform into Saxon's immutable TinyTree
transformer.transform(xml, outputTarget);

// extract the whole XML as TinyNode
final TinyNodeImpl tinyNode = outputTarget.getTree().getNode(0);

// wrap TinyNode as DOM
final NodeOverNodeInfo nodeOverNodeInfo = DocumentOverNodeInfo.wrap(tinyNode);

// cast to DOM
final Document doc = (Document) nodeOverNodeInfo;

(使用 saxon-he 9.5.1 测试)

关于java - 创建一个对读取操作线程安全的 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1504571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com