XMLPull - 基类和派生类之间的拆分节点解析

时间:2012-06-17 11:21:55

标签: java xml xmlpullparser

我正在研究XML Pull解析方法来解析以下文档:

<layout>
  <button height="20" width="20" text="Hello world" />
  <image height="10" width="10" img="foo.png" />
</layout>

并生成相应的Java对象。我有一个抽象的基类Component,它的职责是描述一个具有高度和宽度的通用Component,它应该能够通过解析传递的“node”的相应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()构造函数),派生类如何读取相同的节点来初始化自身?

谢谢;)

1 个答案:

答案 0 :(得分:0)

我最终放弃了这条路径,并选择构建一个内存中的对象树。这里的实现:http://www.bearcave.com/software/java/xml/treebuilder.html非常快,因为它在内部使用XMLPull解析并消耗很少的内存。