2015-08-18 2 views
0

Je suis en train d'analyser le XML ci-dessous à l'aide SAX:Comment analyser noeud qui a le texte ou les nœuds enfants dans Android SAX

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

Le nœud lien peut avoir soit nœuds enfants (type, ID, clé) ou du texte.

J'ai essayé d'utiliser l'extrait de code ci-dessous:

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 
    } 
}); 

Mais le problème est que SAX jette le dessous Exception:

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

Est-il possible autour des nœuds d'analyse qui peuvent avoir un texte ou d'un enfant nœuds? OU la structure XML doit-elle changer?

Répondre

0

Apparemment, cela est impossible avec le gestionnaire par défaut, donc j'ai fini par mettre en œuvre un gestionnaire personnalisé pour contourner ce problème.