0

我正在查看 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() 构造函数),派生类如何读取同一个节点来初始化自己?

谢谢 ;)

4

1 回答 1

0

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

于 2012-06-24T13:27:15.043 回答