如何解析 Android SAX 中具有 TEXT 或子节点的节点

How to parse node that has TEXT or Child nodes in Android SAX

我正在尝试使用 SAX 解析以下 XML:

<feed>
<item>
    <link>
        <type>MY TYPE</type>
        <id>123456789</id>
        <key>123456789</key>
    </link>
</item>
<item>
    <link>htt://www.example.com</link>
</item>
</feed>

节点link可以有子节点(类型、id、键)或文本。

我尝试使用以下代码片段:

RootElement root = new RootElement("feed");
Element item = root.getChild("item");

item.getChild("link").setEndTextElementListener(new EndTextElementListener() {
  public void end(String body) {
    // Grab link text
  }
});

item.getChild("link").getChild("type").setEndTextElementListener(new EndTextElementListener() {
  public void end(String body) {
    // Get type node text
  }
});

但问题是 SAX 抛出以下异常:

if (endTextElementListener != null) {
throw new IllegalStateException("This element already has an end"
        + " text element listener. It cannot have children.");
}

是否有任何方法可以解析可以包含 TEXT 或子节点的节点?或者 XML 结构需要改变吗?

显然,使用默认处理程序这是不可能的,所以我最终实现了一个自定义处理程序来解决这个问题。