簡単な入れ子構造を扱う #2

見た目通りに木構造として扱うならXMLスキーマ言語で構造を表現し、対応するJavaクラスを自動生成するのが手軽だろう。
使用するスキーマ言語としては、寂寥感漂うRELAX NG界だが短縮記法は書くのも理解するのも楽だ。

school.rnc
element school {
  element grade {
    attribute name { xsd:string },
    element group {
      attribute name { xsd:string },
      element student {
        attribute name { xsd:string },
        attribute height { xsd:int }
      }+
    }+
  }+
}