Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "User:Rick.barkhouse.oracle.com/VTD"
Line 28: | Line 28: | ||
// from existing byte[] | // from existing byte[] | ||
// true indicates namespace aware | // true indicates namespace aware | ||
− | vg.setDoc(byte[]); vg.parse(true); | + | vg.setDoc(byte[]); |
+ | vg.parse(true); | ||
// - or - | // - or - | ||
// from file | // from file | ||
− | vg.parseFile("old.xml", false) | + | vg.parseFile("old.xml", false); |
</source> | </source> | ||
</div> | </div> | ||
Line 39: | Line 40: | ||
===Writing a VTD-XML Document (Marshal)=== | ===Writing a VTD-XML Document (Marshal)=== | ||
+ | |||
+ | <div style="width:900px"> | ||
+ | <source lang="java"> | ||
+ | VTDGen vg = new VTDGen(); | ||
+ | vg.parseFile("old.xml", false); | ||
+ | VTDNav vn = vg.getNav(); | ||
+ | |||
+ | XMLModifier xm = new XMLModifier(); | ||
+ | xm.bind(vn); | ||
+ | |||
+ | // ... | ||
+ | |||
+ | // Write to OutputStream | ||
+ | xm.output(new FileOutputStream("new.xml")); | ||
+ | </source> | ||
+ | </div> |
Revision as of 12:51, 14 December 2012
Contents
VTD-XML Investigation
VTD-XML (http://vtd-xml.sourceforge.net/) is a high-performance XML processing model that deals with XML in a binary form, instead of the traditional text form. VTD stands for Virtual Token Descriptor.
VTD-XML parses an XML document and builds an internal data structure representing the entire XML document in byte[] form. Each "token" of the XML document is represented as the following 64-bit integer:
- Big endian
- Starting offset: 30 bits (b29 ~ b0) maximum value is 2^30 -1 = 1G -1
- Length: 20 bits (b51 ~ b32) maximum value is 2^20-1 = 1M -1
- For some token type
- Prefix length: 9 bits (b51~ b43) max value 511
- Q-name length: 11 bits (b42 ~ b 32) max value 1023
- For some token type
- Depth: 8 bits (b59~b52) max value is 2^8-1 = 255
- Token type: 4 bits (b63~b60)
- Reserved bit: 2 bits (b31: b30)
VTD-XML Core Concepts
Generating a VTD-XML Representation of the XML Document (Unmarshal)
VTDGen vg = new VTDGen(); // from existing byte[] // true indicates namespace aware vg.setDoc(byte[]); vg.parse(true); // - or - // from file vg.parseFile("old.xml", false);
Writing a VTD-XML Document (Marshal)
VTDGen vg = new VTDGen(); vg.parseFile("old.xml", false); VTDNav vn = vg.getNav(); XMLModifier xm = new XMLModifier(); xm.bind(vn); // ... // Write to OutputStream xm.output(new FileOutputStream("new.xml"));