Friday 15 April 2011

java - JDOM Xml Adding Member Objects to XML -



java - JDOM Xml Adding Member Objects to XML -

i have slight of problem. doing simple fellow member scheme on club. in system, should able register new user, , register users boats. save .xml file using jdom. have followed guide in next site: http://www.journaldev.com/1211/jdom-write-xml-file-example-from-object

the problem when phone call method adds fellow member in xml file, writes new file. yes 1 time isn't problem, able add together members after members after turning application off, overwritten , new fellow member takes place. not want.

i want somehow every time add together new fellow member member gets added @ end of lastly added element in existing xml file, no file, creates file or something. appreciate help more experienced guys you;)

class="lang-xml prettyprint-override"> <?xml version="1.0" encoding="utf-8"?> <members xmlns="boatclubsystem members"> <member xmlns="" memberid="null"> <name>jakob wångö</name> <personalid>199107270077</personalid> <boat> <boattype>sailingboat</boattype> <boatlenght>30m</boatlenght> </boat> </member> <member> xmlns ="memberid="null"> <name>john doe</name> </member> </members> class="lang-java prettyprint-override">public class controller{ view theview; fellow member membermodel; boat boatmodel; static string file = "boatclubsystem.xml"; static list<member> memberlist = new arraylist<member>(); static list<boat> boatlist = new arraylist<boat>(); public static void main(string[]args) throws ioexception{ fellow member m = new member(); fellow member m2 = new member(); boat b = new boat(); boat b2 = new boat(); m.setname("jakob wangoe"); m.setpersonid("19910727****"); memberlist.add(m); b.setboattype(1); b.setboatlength(30); boatlist.add(b); createxmlsystem(memberlist, boatlist); } public static void createxmlsystem(list<member> memberlist, list<boat> boatlist) throws ioexception{ document doc = new document(); doc.setrootelement(new element("members", namespace.getnamespace("boatclubsystem members"))); (member memb : memberlist){ element fellow member = new element("member"); member.addcontent(new element("memberid").settext(memb.getmemberid())); member.addcontent(new element("name").settext(""+memb.getname())); member.addcontent(new element("personalid").settext(memb.getpersonid())); for(boat boat : boatlist){ element boats = new element("boat"); boats.addcontent(new element("boattype").settext(boat.getboattype())); boats.addcontent(new element("boatlenght").settext(boat.getboatlenght()+"m")); member.addcontent(boats); } doc.getrootelement().addcontent(member); } //jdom document ready, write file xmloutputter xmloutputter = new xmloutputter(format.getprettyformat()); xmloutputter.output(doc, new fileoutputstream(file)); } }

jdom in-memory model xml representation, , xmloutputter code dumps in-memory model output (the file on disk).

what need first load xml in memory. if file exists on disk, load file. if file not exist, have build empty one.

the code can become quite complicated manually build empty jdom document. have trick that, basic code block should be:

document doc = null; saxbuilder builder = new saxbuilder(); if (file.exists()) { doc = builder.build(file); } else { // build fresh document .... } // build new member.... .... // add together document element members = doc.getrootelement(); members.addcontent(newmember); xmloutputter xmlout = new xmloutputter(format.getprettyformat()); seek (fileoutputstream fos = new fileoutputstream(file)) { xmlout.output(fos, doc); } grab (ioexception ...) { }

a trick utilize creating empty documents utilize jar resource.... , utilize input stream seed:

doc = builder.build(classloader.getsystemresource("my/package/emptymembers.xml"));

using above allows edit empty document text, instead of building components.

java xml jdom

No comments:

Post a Comment