开发者社区> 问答> 正文

dom4j 修改节点的原理是什么:报错

看到dom4j     官方doc 里面描述修改节点值 产生了疑问

程序读取xml的内容放到document, 然后根据一定的条件筛选出element,

对这些element进行修改,或者移除,从代码上看,最后都没有保存到document,但是操作的结果就是保存进去

简单地说:从A中抽出B,将B进行修改或者移除,但是没看到代码上有任何的将B保存回A,可是操作的结果却是保存进去

这里面是什么原理。一直想不透

 Document document = saxReader.read(new File(filename));

  list = document.selectNodes("/books/book");
           iter = list.iterator();
             while(iter.hasNext()){
              Element bookElement = (Element)iter.next();
              Iterator iterator = bookElement.elementIterator("title");
                while(iterator.hasNext()){
                  Element titleElement=(Element)iterator.next();
                    if(titleElement.getText().equals("Dom4j Tutorials")){
                     bookElement.remove(titleElement);
                  }
              }
           }        

展开
收起
kun坤 2020-06-07 16:54:56 492 0
1 条回答
写回答
取消 提交回答
  • 屏蔽了一些关于文件操作的代码啊。。看不到又不是表示没有。你将文件设置为只读试试######

    .....毛线...你到底懂不懂java!

    ######

    这个笑话一点不好笑啊。

    去饭馆吃饭,需要亲眼看到厨师给你烧火切菜,知道厨师怎么做饭,菜在哪个菜市场买的吗?

    -----吐槽完毕------

    既然好奇,点开remove方法不就啥都看见了。

    ######

    引用来自“loyal”的评论

    .....毛线...你到底懂不懂java!

    您好,您懂得话,教我

    ######

    引用来自“南湖船老大”的评论

    这个笑话一点不好笑啊。

    去饭馆吃饭,需要亲眼看到厨师给你烧火切菜,知道厨师怎么做饭,菜在哪个菜市场买的吗?

    -----吐槽完毕------

    既然好奇,点开remove方法不就啥都看见了。

    您好!请认真看我的问题,我认为您的那个比喻不合适!去餐馆吃饭,你把菜夹出来,只剩下盘了,然后对自己说,我对这盘菜什么都没动过,我可以退菜! 

    我应该去把源码读一篇谢谢

    ######

    引用来自“Timco”的评论

    屏蔽了一些关于文件操作的代码啊。。看不到又不是表示没有。你将文件设置为只读试试

    我只是探讨一下他的原理,因为这和我们日常文件编辑有点不一样,很奇妙。我们在编辑文件的时候,首先是把源文件拿出来,在他的基础上修改,保存。而不是把源文件copy到另外一个地方A,编辑A就自动保存进去(而且自动保存竟然保存到源文件中去了)

    ######

    利用saxreader,将文件保存到document中,然后筛选出相关的节点保存到list,然后将list中的每一个项转化为element,直接调用element的方法remove,就把节点给删除掉了,按照通常的代码的编写方式,要能保存remove删掉的结果,至少应该有一个save操作保存到document中。这是我的疑问

    2020-06-07 16:55:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
探究 Node.js 的服务端之路 立即下载
穆客带你快速定位 Node.js 内存泄露 立即下载
穆客带你快速定位Node.js内存泄露 立即下载