Why in-situ parser ?
It saves a lot of copy. Strings are copied only when containing escape characters or when the text is fragmented because of comments, CDATA or Processing Instructions. The strings are referenced with a pair of pointers (begin, end) and are not null terminated. Converting values to null terminated strings would be a terrible waste of time when strings are numerical values or symbolic constants that will be stored as numbers.