如何解析 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 结构需要改变吗?
显然,使用默认处理程序这是不可能的,所以我最终实现了一个自定义处理程序来解决这个问题。
我正在尝试使用 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 结构需要改变吗?
显然,使用默认处理程序这是不可能的,所以我最终实现了一个自定义处理程序来解决这个问题。