java怎么在XML指定位置插入节点

wq1764328315 2010-04-27 02:27:09
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<root>
<child ID="1"> old </child>
<child ID="2"> old </child>
</root>
--------------------------------------------
我要在child的ID="1"和ID="2"之间插入节点怎么插入?插入后的效果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
<child ID="1"> old </child>
<child ID="3"> new </child> -->这是新插入的的节点
<child ID="2"> old </child>
</root>
----------------------------------------------------
我用的是DOM4J的jar包 ,请高手指教.
...全文
616 13 打赏 收藏 转发到动态 举报
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
leo19870706 2012-11-20
  • 打赏
  • 举报
回复
try { SAXReader reader = new SAXReader(); Document document = reader.read("./src/source_file/new_xml.xml"); //Add new node GlobalPurchaseOrderAcknowledgmentReasonCode Element root = (Element) document.selectSingleNode("/Pip3Y4PurchaseOrderConfirmation/PurchaseOrder"); List<Element> elements = root.elements(); int index = 0; for(Element element:elements){ index++; System.out.println("Index:"+index+"Element_Name:"+element.getName()); if("AccountDescription".equals(element.getName())){ Element elem = DocumentHelper.createElement("GlobalPurchaseOrderAcknowledgmentReasonCode"); elem.addText(entity.getGlobalPurchaseOrderAcknowledgmentReasonCode()); Element elem1 = DocumentHelper.createElement("GlobalPurchaseOrderAcknowledgmentReasonCode"); elem1.addText(entity.getGlobalPurchaseOrderAcknowledgmentReasonCode_2()); Element elem2 = DocumentHelper.createElement("GlobalPurchaseOrderStatusCode"); elem2.addText(entity.getGlobalPurchaseOrderStatusCode()); elements.add(index,elem); elements.add(index+1,elem1); elements.remove(index+2); elements.add(index+2, elem2); break; } } 这个是我解决方案,希望可以帮助你
leo19870706 2012-11-20
  • 打赏
  • 举报
回复
遇到同样的问题
聪明的我我我 2011-10-11
  • 打赏
  • 举报
回复
同样的功能,用dom4j能不能从根节点开始位置插入,不在最后插入?
聪明的我我我 2011-10-11
  • 打赏
  • 举报
回复
我在正需要这个功能,找高手求助
sun_t89 2011-03-14
  • 打赏
  • 举报
回复
楼主还在吗 有没有解决这个问题呢? 分享一下。 我也正在做这个东西,实现功能与楼主相同。
sara8382 2010-11-08
  • 打赏
  • 举报
回复
怎么在取得节点值的同时获得节点的索引啊
wq1764328315 2010-04-27
  • 打赏
  • 举报
回复
一般插入都是这样
<?xml version="1.0" encoding="utf-8"?>
<root>
<child ID="1"> old </child>
<child ID="2"> old </child>
<child ID="3"> new </child>-->这是新插入的的节点位置
</root>
怎样插入才能在想要的位置如下:
<?xml version="1.0" encoding="utf-8"?>
<root>
<child ID="1"> old </child>
<child ID="3"> new </child> -->这是新插入的的节点位置
<child ID="2"> old </child>
</root>
seast_88 2010-04-27
  • 打赏
  • 举报
回复
关注中
koch_129 2010-04-27
  • 打赏
  • 举报
回复
阿弥陀佛
阿弥陀佛
wq1764328315 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fm2005 的回复:]
SAXReader reader = new SAXReader();
Document doc = reader.read("conf/student.xml");
Element root = doc.getRootElement();
Element zhangsanNode = (Element) root.selectSingleNode(path);
E……
[/Quote]

貌似看懂我的意思,我节点和属性都可以添加,只是想在指定位置插入还不是在最末尾位置插入,而且要用dom4j(因为一开始就是用的这个,换的话所有程序都要改)
fm2005 2010-04-27
  • 打赏
  • 举报
回复

SAXReader reader = new SAXReader();
Document doc = reader.read("conf/student.xml");
Element root = doc.getRootElement();
Element zhangsanNode = (Element) root.selectSingleNode(path);
Element cloneE = (Element) zhangsanNode.clone();
cloneE.element("age").setText(Integer.parseInt(cloneE.elementText("age"))+1+"");
Element parent = zhangsanNode.getParent();
parent.elements().add(2, cloneE);
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream("conf/student.xml"),format);
writer.write(doc);
writer.close();

xml
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>zhangsan</name>
<age>18</age>
<gender>male</gender>
</student>
<student>
<name>lisi</name>
<age>22</age>
<age>23</age>
<gender>remale</gender>
</student>
</students>
python简明教程
霜之哀伤 2010-04-27
  • 打赏
  • 举报
回复
API你看过了吗?
wq1764328315 2010-04-27
  • 打赏
  • 举报
回复
呼呼,有没有发错位置,这里有人能解决吧?
相关推荐

62,566

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告