dom4jでxmlをinsert,update,delete

dom4j使ってます。

insert
insertする場合って、elementとattributeを一から作ってたら、
要素が多い場合やネストが深い場合は、面倒なので、どうするのかなっと思ったら、

SAXReader reader = new SAXReader();
Document doc = reader.read( xmlPath );
Element re = doc.getRootElement();
		
// insert xml
Document insertXml = DocumentHelper.parseText(str);		
re.add( insertXml.getRootElement() );

parseTextでいけそう。

update
update(replace)大変そうだと思ったら、
http://www.mail-archive.com/dom4j-user@lists.sourceforge.net/msg01735.html

// update xml
String updateId = "id";
Element updateElement = new Element();
		
// old element
Element oldElement = (Element)doc.selectSingleNode("//item[@id='" + updateId + "']");
if ( oldElement==null ) return;
		
List<Node> contentOfParent = doc.getRootElement().content();
int index = contentOfParent.indexOf(oldElement);
contentOfParent.set(index, updateElement);

これでいけそう。

delete
さて、delete。insert,updateの材料があれば、簡単。

Element re = doc.getRootElement();
re.remove(oldElement);

asでE4Xで、XML操作してると、Javaめんどくせーって思ったけど、
そうでもないのかな。でもやっぱりE4Xのほうが楽だけど。