private void write(BXMLNode node, IntWriter writer) throws IOException { node.writeStart(writer); if (node.hasChild()) { for (BXMLNode child : node.getChildren()) { write(child, writer); } } node.writeEnd(writer); }
private void prepare(BXMLNode node) { node.prepare(); Pair<Integer, Integer> p = node.getSize(); mSize += p.first + p.second; if (node.hasChild()) { for (BXMLNode child : node.getChildren()) { prepare(child); } } }
public void read(IntReader reader) throws IOException { mRoot.checkStartTag(NS_START); mVisitor.push(mRoot); mRoot.readStart(reader); int chunkType; end: while (true) { chunkType = reader.readInt(); switch (chunkType) { case NODE_START: { BTagNode node = new BTagNode(); node.checkStartTag(NODE_START); BXMLNode parent = mVisitor.peek(); parent.addChild(node); mVisitor.push(node); node.readStart(reader); } break; case NODE_END: { BTagNode node = (BTagNode) mVisitor.pop(); node.checkEndTag(NODE_END); node.readEnd(reader); } break; case TEXT: { System.out.println("Hello Text"); } break; case NS_END: break end; } } if (!mRoot.equals(mVisitor.pop())) { throw new IOException("doc has invalid end"); } mRoot.checkEndTag(chunkType); mRoot.readEnd(reader); }