我正在查看 XML Pull 解析方法来解析以下文档:
<layout>
<button height="20" width="20" text="Hello world" />
<image height="10" width="10" img="foo.png" />
</layout>
并生成相应的 Java 对象。我有一个抽象基类组件,它的职责是描述一个具有高度和宽度的通用组件,它应该能够通过解析传递的“节点”的相应 XML 属性来获取这些值(更准确地说,解析器指向节点)。
从 Component 派生,我有两个具体的类 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() 构造函数),派生类如何读取同一个节点来初始化自己?
谢谢 ;)