FlatTree offers adapters to read and write flat files from several XML based APIs:
FlatTree's nodes are mapped to XML nodes, leaves are mapped to XML attributes.
Writing SAX events as a flat file with flattree.xml.sax.FlatHandler :
public ContentHandler createContentHandler(Writer writer) {
return new FlatHandler(root, writer);
}
Reading a flat file as SAX events with flattree.xml.sax.FlatXMLReader :
public XMLReader createXMLReader() {
return new FlatXMLReader(root);
}
Writing StAX events as a flat file with flattree.xml.stax.FlatStreamWriter :
public XMLStreamWriter createXMLStreamWriter(Writer writer) {
return new FlatStreamWriter(root, writer);
}
Reading a flat file as StAX events with flattree.xml.stax.FlatStreamReader
public XMLStreamReader createXMLStreamReader(Reader reader) {
return new FlatStreamReader(root, reader);
}
Utilizing a flattree.xstream.FlatHierarchicalStreamDriver with XStream. Note how a flattree.xstream.AttributePreferringMapper is used to map simple object fields to XML attributes:
public XStream createXStream() {
HierarchicalStreamDriver driver = new FlatHierarchicalStreamDriver(root);
return new XStream(driver) {
protected MapperWrapper wrapMapper(MapperWrapper next) {
return new AttributePreferringMapper(next, getConverterLookup());
}
};
}