Linked int[]
A node is represented as an integer number, an index to access the name code, parent node number, type code, first child node number, next and previous sibling node number and the first attribute node number.
7 integers = 28Bytes

Could be further optimized by encoding the type into the name code or the node number itself. Eg. still 1billion nodes with a 30 bit number.

/livcos.org/data/map/brainstorm/DomImplementation