次のドキュメントを解析するためのXMLプル解析アプローチを検討しています。
<layout>
<button height="20" width="20" text="Hello world" />
<image height="10" width="10" img="foo.png" />
</layout>
対応するJavaオブジェクトを生成します。私は抽象基本クラスComponentを持っています。その責任は、高さと幅を持つジェネリックComponentを記述することであり、渡された「ノード」(より正確には、パーサー)の対応するXML属性を解析することによってこれらの値を取得できるはずです。ノードを指す)。
Componentから派生して、2つの具体的なクラスButtonとImageがあり、それぞれテキストと画像を追加します。XML属性からこれらの値を初期化できる必要があります。
これは、クラスの実装のスケッチです。
public abstract class Component {
public int width;
public int height;
public Component(XmlPullParser parser) {
//TODO ???
}
}
public class Button extends Component {
public String text;
public Button(XmlPullParser parser) {
super(parser);
//TODO ???
}
}
public class Image extends Component {
public String img;
public Image(XmlPullParser parser) {
super(parser);
//TODO ???
}
}
問題は、この動作を取得するために解析を実装する方法です。私の主な懸念は、パーサーでnextTag()を呼び出すと、パーサー自体が「変更」されることです。したがって、Componentスーパークラスがノード全体を読み取って幅と高さを取得する場合(super()コンストラクターを呼び出す)、派生クラスはどのようにして同じノードを読み取ってそれ自体を初期化できますか?
ありがとう ;)