Я смотрю на XML Вытащит разбор подхода разобрать следующий документ:XMLPull - Split разбор узла между базовым классом и производными классами
<layout>
<button height="20" width="20" text="Hello world" />
<image height="10" width="10" img="foo.png" />
</layout>
и производить соответствующие объекты Java. У меня есть компонент абстрактного базового класса, ответственность которого будет заключаться в описании общего компонента, имеющего высоту и ширину, и он должен иметь возможность получать эти значения, анализируя соответствующие XML-атрибуты прошедшего «узла» (точнее, синтаксический анализатор указывая на узел).
Производя из компонента, у меня есть два конкретных класса 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()), как производный класс мог прочитать один и тот же узел для инициализации?
Спасибо;)