static void Main(string[] args) { VTDGen vg = new VTDGen(); int i; AutoPilot ap = new AutoPilot(); ap.selectXPath("/CATALOG/CD[PRICE < 10]"); BookMark bm = new BookMark(); if (vg.parseFile("cd.xml", false)) { VTDNav vn = vg.getNav(); bm.bind(vn); ap.bind(vn); //XPath eval returns one node at a time while ((i = ap.evalXPath()) != -1) { // push the current cursor position //vn.push(); bm.recordCursorPosition(); // equivalent to vn.push(); // get to the first child if (vn.toElement(VTDNav.FIRST_CHILD, "TITLE")) { int j = vn.getText(); if (j != -1) Console.WriteLine(" text node ==>" + vn.toString(j)); } // restore the cursor position //vn.pop(); bm.setCursorPosition(); // equivalent to vn.pop(); } ap.resetXPath(); } }
static void Main(string[] args) { VTDGen vg = new VTDGen(); int i; if (vg.parseFile("po.xml", true)) { // instantiate a node recorder here NodeRecorder nr = new NodeRecorder(); AutoPilot ap = new AutoPilot(); VTDNav vn = vg.getNav(); ap.bind(vn); // bind node recorder to vn nr.bind(vn); ap.selectXPath("(/*/*/*)[position()=1 or position()=10]"); while ((i = ap.evalXPath()) != -1) { nr.record(); // save the selected nodes into nr } ap.resetXPath(); // a good practice nr.resetPointer(); // get into nr's read mode // iterating over the nodes recorded by nr while ((i = nr.iterate()) != -1) { Console.WriteLine("string ==>" + vn.toString(i)); } nr.clear(); //remove all the nodes in nr, buffer is however reused } }
public static void Main(String[] args) { 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"); Encoding eg = System.Text.Encoding.GetEncoding("utf-8"); if (vg.parseFile("old.xml", false)) { VTDNav vn = vg.getNav(); ap0.bind(vn); ap1.bind(vn); ap2.bind(vn); FileStream fos = new FileStream("new.xml", System.IO.FileMode.OpenOrCreate); //fos.Write("<root>".getBytes()); byte[] ba0,ba1, ba2, ba3, ba4; //ba0 = eg.GetBytes(" ba1 = eg.GetBytes("<root>"); ba2 = eg.GetBytes("</root>"); ba3 = eg.GetBytes("\n"); fos.Write(ba1, 0, ba1.Length); byte[] ba = vn.getXML().getBytes(); while (ap0.evalXPath() != -1) { long l = vn.getElementFragment(); int offset = (int)l; int len = (int)(l >> 32); fos.Write(ba3,0,ba3.Length); 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(ba3,0,ba3.Length); 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(ba3,0,ba3.Length); fos.Write(ba, offset, len); } ap2.resetXPath(); fos.Write(ba3,0,ba3.Length); fos.Write(ba2,0,ba2.Length); } }
static void Main(string[] args) { try { VTDGen vg = new VTDGen(); VTDNav vn = vg.loadIndex("po.vxl"); AutoPilot ap = new AutoPilot(vn); ap.selectXPath("//items"); int i; while ((i = ap.evalXPath()) != -1) { } ap.resetXPath(); } catch (Exception e) { } }
static void Main(string[] args) { try { int t; System.IO.FileInfo f = new System.IO.FileInfo("./soap2.xml"); System.IO.FileStream fis = new System.IO.FileStream(f.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.FileInfo f1 = new System.IO.FileInfo("./out.xml"); System.IO.FileStream fos = new System.IO.FileStream(f1.FullName, System.IO.FileMode.Create); byte[] b = new byte[(int)f.Length]; fis.Read(b, 0, (int)f.Length); AutoPilot ap = new AutoPilot(); ap.declareXPathNameSpace("ns1", "http://www.w3.org/2003/05/soap-envelope"); // get to the SOAP header ap.selectXPath("/ns1:Envelope/ns1:Header/*[@ns1:mustUnderstand]"); Console.WriteLine("expr string is " + ap.getExprString()); // instantiate the parser VTDGen vg = new VTDGen(); int j = 0; VTDNav vn = null; while (j < 10) { vg.setDoc_BR(b); // use setDoc_BR (instead of setDoc) to turn on buffer reuse vg.parse(true); // set namespace awareness to true vn = vg.getNav(); ap.bind(vn); // bind calls resetXPath() so while ((t = ap.evalXPath()) != -1) { Console.WriteLine("j t--> " + j + " " + t); long l = vn.getElementFragment(); int len = (int)(l >> 32); int offset = (int)l; fos.Write(b, offset, len); //write the fragment out into out.txt System.Text.Encoding encoder = System.Text.Encoding.GetEncoding("ASCII"); byte[] bytes = encoder.GetBytes("\n=========\n"); fos.Write(bytes, 0, bytes.Length); } ap.resetXPath(); j++; } j = 0; Console.WriteLine("j -->" + j); vg.setDoc_BR(b); // use setDoc_BR (instead of setDoc) to turn on buffer reuse vg.parse(true); // set namespace awareness to true vn = vg.getNav(); ap.bind(vn); // bind calls resetXPath() so t =-1; while (j < 10) { while ((t = ap.evalXPath()) != -1) { Console.WriteLine("j t --> " + j + " " + t); long l = vn.getElementFragment(); int len = (int)(l >> 32); int offset = (int)l; fos.Write(b, offset, len); //write the fragment out into out.txt System.Text.Encoding encoder = System.Text.Encoding.GetEncoding("ASCII"); byte[] bytes = encoder.GetBytes("\n=========\n"); fos.Write(bytes, 0, bytes.Length); } ap.resetXPath(); j++; } fis.Close(); fos.Close(); } catch (ParseException e) { } catch (NavException e) { } catch (XPathParseException e) { } catch (XPathEvalException e) { } catch (System.IO.IOException e) { } }