// A simple app that shuffles elements in an XML file // it uses XPath to address individual element // then re-arrange the fragments /* The input XML looks like this: text text text text text text text text text */ /* The ouput XML looks like this: text text text text text text text text text */ import com.ximpleware.*; import java.io.*; public class shuffle { public static void main(String[] args) throws Exception { VTDGen vg = new VTDGen(); AutoPilot ap0 = new AutoPilot(); AutoPilot ap1 = new AutoPilot(); AutoPilot ap2 = new AutoPilot(); ap0.selectXPath("/root/a"); ap1.selectXPath("/root/b"); ap2.selectXPath("/root/c"); if (vg.parseFile("old.xml",false)){ VTDNav vn = vg.getNav(); ap0.bind(vn); ap1.bind(vn); ap2.bind(vn); FileOutputStream fos = new FileOutputStream("new.xml"); fos.write("".getBytes()); byte[] ba = vn.getXML().getBytes(); while(ap0.evalXPath()!=-1){ long l= vn.getElementFragment(); int offset = (int)l; int len = (int)(l>>32); fos.write('\n'); fos.write(ba,offset, len); } ap0.resetXPath(); while(ap1.evalXPath()!=-1){ long l= vn.getElementFragment(); int offset = (int)l; int len = (int)(l>>32); fos.write('\n'); fos.write(ba,offset, len); } ap1.resetXPath(); while(ap2.evalXPath()!=-1){ long l= vn.getElementFragment(); int offset = (int)l; int len = (int)(l>>32); fos.write('\n'); fos.write(ba,offset, len); } ap2.resetXPath(); fos.write('\n'); fos.write("".getBytes()); } } }