再帰すらろくにできないならプッシュ型パーサに
XMLストリーム渡してハンドリングしながら順次書き出すのが一番楽だね。

書き出しならDOMかE4X、読み出しならプル型かXPathってところか。
XPathは構文特殊だがハイブリッド型の実装って少ないからなぁ。

特殊な事するならパーサ部分から自前でした方が早いね。