我有一个org.dom4j.Document特定的DefaultDocument实现的实例.我想在另一个节点之前插入一个新节点.我真的不明白dom4j api,我对Element和DOMElement和之间的区别感到困惑.
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);
}
Run Code Online (Sandbox Code Playgroud)
for*_*two 11
这是一个"老"的问题,但答案可能仍然是相关的.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);
Run Code Online (Sandbox Code Playgroud)
DOM4J中的列表是实时列表,即变异列表操作影响文档树,反之亦然
作为旁注,DOMElement和所有其他类org.dom4j.dom都是DOM4J实现,它也支持w3c DOM API.这很少需要(我不会把它和一堆其他"深奥"的包装,如bean,datatype,jaxb,swing等,在同一个分发单元中).专注于核心org.dom4j,org.dom4j.tree,org.dom4j.io和 org.dom4j.xpath包.
| 归档时间: |
|
| 查看次数: |
6717 次 |
| 最近记录: |