gpt4 book ai didi

java - 将 DOM 文档导出为 XML,并将 userData 作为属性

转载 作者:行者123 更新时间:2023-12-01 09:34:25 25 4
gpt4 key购买 nike

我正在处理一个Document带有数据的对象,某些节点具有与其关联的 userData (使用 setUserData(<key>, <value>, <handler>) )。我想将文档的副本保存为 XML,并将 userData 值导出为属性。

变压器

这是我知道的输出 XML 的方式:

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(<Document>);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);

但是我找不到一种方法来 Hook 新旧 Node 对象都存在的方法——这是我在深入研究 Transformer 时能找到的唯一地方。是一个类(class)DOM2TO将节点转换为例如。 SAX 调用 startElement(...) ,但如果不复制粘贴整个代码,我就无法在此处更改任何内容。

用户数据处理程序

我的第二种方法是使用 UserDataHandler 与 userData 一起附加到节点。该处理程序必须提供一个方法 handle(short operation, String key, Object data, Node src, Node dst)这就是所谓的例如。当节点被克隆时。因此可以编写一个 UserDataHandler 来检查 src userData 的节点并将其作为属性添加到 dst然后简单地克隆文档,然后再从克隆中写入 XML。 不幸的是handle(...)dst 的阶段被调用节点克隆未完成:当src时具有属性,dst将指向相同的 AttributeMap当时的例子。因此,整个过程毫无值(value),因为添加的属性也会添加到原始文档中,而我不想这样做。

最佳答案

问题解决了 - 我必须使用一个在 NODE_IMPORTED 工作的 UserDataHandler :然后handle(...)使用完全克隆的 dst 调用方法节点。

但这不是一个好的解决方案,因为克隆(hrm,导入)文档会使所需空间加倍。

关于java - 将 DOM 文档导出为 XML,并将 userData 作为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39125102/

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