gpt4 book ai didi

java - 如何使用 dom4j 在另一个节点之前插入一个节点?

转载 作者:数据小太阳 更新时间:2023-10-29 02:00:50 25 4
gpt4 key购买 nike

我有一个 org.dom4j.Document 实例,具体来说是一个 DefaultDocument 实现。我想在另一个节点之前插入一个新节点。我不太了解 dom4j api,我对 ElementDOMElement 和东西之间的区别感到困惑。

org.dom4j.dom.DOMElement.insertBefore 对我不起作用,因为我拥有的节点不是 DOMElement。 DOMNodeHelper.insertBefore 也不好,因为我有 org.dom4j.Node 实例而不是 org.w3c.dom.Node 实例。我的天啊。

你能给我一个小代码片段来帮我完成这项工作吗?

这是我现在拥有的:

// puts lr's to the very end in the xml, but I'd like to put them before 'e'
for(Element lr : loopResult) {
e.getParent().add(lr);
}

最佳答案

这是一个“老”问题,但答案可能仍然相关。 DOM4J API 的一个问题是做同一件事的方法太多;太多的便利方法,效果是只见树木不见森林。在你的情况下,你应该得到一个子元素列表并将你的元素插入到所需的位置:像这样的东西(未经测试):

// get a list of e's sibling elements, including e
List elements = e.getParent().elements();
// insert new element at e' position, i.e. before e
elements.add(elements.indexOf(e), lr);

DOM4J 中的列表是 Activity 列表,即改变列表操作会影响文档树,反之亦然

作为旁注,org.dom4j.dom 中的 DOMElement 和所有其他类都是 DOM4J 实现,它也支持 w3c DOM API。这很少需要(我不会把它和一堆其他“深奥的”包,如 bean、数据类型、jaxb、swing 等放在同一个分发单元中)。专注于核心 org.dom4jorg.dom4j.treeorg.dom4j.ioorg.dom4j.xpath包。

关于java - 如何使用 dom4j 在另一个节点之前插入一个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7571369/

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