public static VTDNav parseString(String s) { VTDGen vg = new VTDGen(); System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); vg.setDoc(encoding.GetBytes(s)); vg.parse(true); return(vg.getNav()); }
static void Main(string[] args) { VTDGen vg = new VTDGen(); vg.setDoc(getBytes("<root>good</root>")); vg.parse(true); VTDNav vn = vg.getNav(); int i = vn.getText(); //print "good" Console.WriteLine("text ---> " + vn.toString(i)); if (vn.overWrite(i, getBytes("bad"))) { //overwrite, if successful, returns true //print "bad" here Console.WriteLine("text ---> " + vn.toString(i)); } }
public static void Main(String[] args) { String xml = "<aaaa> <bbbbb> <ccccc> </ccccc> <ccccc/> <ccccc></ccccc> </bbbbb> </aaaa>"; Encoding eg = Encoding.GetEncoding("utf-8"); VTDGen vg = new VTDGen(); vg.setDoc(eg.GetBytes(xml)); vg.parse(false); VTDNav vn = vg.getNav(); AutoPilot ap = new AutoPilot(vn); ap.selectXPath("//*"); XMLModifier xm = new XMLModifier(vn); while (ap.evalXPath() != -1) { xm.updateElementName("d:/lalalala"); } xm.output("lala.xml"); }
public static void readSeparateIndex(System.IO.Stream index, System.IO.Stream XMLBytes, int XMLSize, VTDGen vg) { if (index == null || vg == null || XMLBytes == null) { throw new System.ArgumentException("Invalid argument(s) for readIndex()"); } //UPGRADE_TODO: Class 'java.io.DataInputStream' was converted to 'System.IO.BinaryReader' //which has a different behavior. //"ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javaioDataInputStream'" System.IO.BinaryReader dis = new System.IO.BinaryReader(index); byte b = dis.ReadByte(); // first byte // no check on version number for now // second byte vg.encoding = dis.ReadByte(); int intLongSwitch; int endian; // third byte b = dis.ReadByte(); if ((b & 0x80) != 0) { intLongSwitch = 1; } //use ints else { intLongSwitch = 0; } if ((b & 0x40) != 0) { vg.ns = true; } else { vg.ns = false; } if ((b & 0x20) != 0) { endian = 1; } else { endian = 0; } if ((b & 0x1f) != 0) { throw new IndexReadException("Last 5 bits of the third byte should be zero"); } // fourth byte vg.VTDDepth = dis.ReadByte(); // 5th and 6th byte int LCLevel = (((int)dis.ReadByte()) << 8) | dis.ReadByte(); if (LCLevel != 4 && LCLevel != 6) { throw new IndexReadException("LC levels must be at least 3"); } // 7th and 8th byte vg.rootIndex = (((int)dis.ReadByte()) << 8) | dis.ReadByte(); // skip a long dis.ReadInt64(); //Console.WriteLine(" l ==>" + l); dis.ReadInt64(); //Console.WriteLine(" l ==>" + l); long l = dis.ReadInt64(); int size; // read XML size if (BitConverter.IsLittleEndian && endian == 0 || BitConverter.IsLittleEndian == false && endian == 1) { size = (int)l; } else { size = (int)reverseLong(l); } // read XML bytes byte[] XMLDoc = new byte[size]; XMLBytes.Read(XMLDoc, 0, size); //dis.Read(XMLDoc, 0, size); /*if ((size & 0x7) != 0) * { * int t = (((size >> 3) + 1) << 3) - size; * while (t > 0) * { * dis.ReadByte(); * t--; * } * }*/ vg.setDoc(XMLDoc); // skip a long dis.ReadInt64(); //Console.WriteLine(" l ==>" + l); dis.ReadInt64(); //Console.WriteLine(" l ==>" + l); if (BitConverter.IsLittleEndian && endian == 0 || BitConverter.IsLittleEndian == false && endian == 1) { // read vtd records int vtdSize = (int)dis.ReadInt64(); while (vtdSize > 0) { vg.VTDBuffer.append(dis.ReadInt64()); vtdSize--; } // read L1 LC records int l1Size = (int)dis.ReadInt64(); while (l1Size > 0) { vg.l1Buffer.append(dis.ReadInt64()); l1Size--; } // read L2 LC records int l2Size = (int)dis.ReadInt64(); while (l2Size > 0) { vg.l2Buffer.append(dis.ReadInt64()); l2Size--; } // read L3 LC records int l3Size = (int)dis.ReadInt64(); if (vg.shallowDepth) { if (intLongSwitch == 1) { //l3 uses ints while (l3Size > 0) { vg.l3Buffer.append(dis.ReadInt32()); l3Size--; } } else { while (l3Size > 0) { vg.l3Buffer.append((int)(dis.ReadInt64() >> 32)); l3Size--; } } } else { while (l3Size > 0) { vg._l3Buffer.append(dis.ReadInt64()); l3Size--; } int l4Size = (int)dis.ReadInt64(); while (l4Size > 0) { vg._l4Buffer.append(dis.ReadInt64()); l4Size--; } int l5Size = (int)dis.ReadInt64(); if (intLongSwitch == 1) { while (l5Size > 0) { vg._l5Buffer.append(dis.ReadInt32()); l5Size--; } } else { while (l5Size > 0) { vg._l5Buffer.append((int)(dis.ReadInt64() >> 32)); l5Size--; } } } } else { // read vtd records int vtdSize = (int)reverseLong(dis.ReadInt64()); while (vtdSize > 0) { vg.VTDBuffer.append(reverseLong(dis.ReadInt64())); vtdSize--; } // read L1 LC records int l1Size = (int)reverseLong(dis.ReadInt64()); while (l1Size > 0) { vg.l1Buffer.append(reverseLong(dis.ReadInt64())); l1Size--; } // read L2 LC records int l2Size = (int)reverseLong(dis.ReadInt64()); while (l2Size > 0) { vg.l2Buffer.append(reverseLong(dis.ReadInt64())); l2Size--; } // read L3 LC records int l3Size = (int)reverseLong(dis.ReadInt64()); if (vg.shallowDepth) { if (intLongSwitch == 1) { //l3 uses ints while (l3Size > 0) { vg.l3Buffer.append(reverseInt(dis.ReadInt32())); l3Size--; } } else { while (l3Size > 0) { vg.l3Buffer.append(reverseInt((int)(dis.ReadInt64() >> 32))); l3Size--; } } } else { while (l3Size > 0) { vg._l3Buffer.append(reverseLong(dis.ReadInt64())); l3Size--; } int l4Size = (int)reverseLong(dis.ReadInt64()); { vg._l4Buffer.append(reverseLong(dis.ReadInt64())); l4Size--; } int l5Size = (int)reverseLong(dis.ReadInt64()); if (intLongSwitch == 1) { //l3 uses ints while (l5Size > 0) { vg._l5Buffer.append(reverseInt(dis.ReadInt32())); l5Size--; } } else { while (l5Size > 0) { vg._l5Buffer.append(reverseInt((int)(dis.ReadInt64() >> 32))); l5Size--; } } } } }