2010-02-15 5 views
0

Je suis en train d'analyser un document XML en utilisant SAX en Java.
Je travaille avec le XML qui décrit les publications de recherche dans différents domaines.
Entre autres, il y a des éléments comme «abstrait» qui décrit brièvement ce que le papier de recherche est à propos. La mise en forme HTML de base est autorisée dans ce champ, mais je ne veux pas que le SAX menace les balises HTML (comme i, b, u, sub, sup etc.) comme de vraies balises XML et fire strartElement() et endElement () les événements sur ces éléments.ignorer certaines balises XML dans SAX

Existe-t-il un moyen de dire à SAX d'ignorer certains ensembles prédéfinis de balises XML et de passer leur code XML comme à la méthode characters()?

+0

Je suis assez sûr que la réponse est "non", mais voyons si quelqu'un trouve quelque chose. – skaffman

Répondre

0

Je ne pense pas, sans un peu de travail. Je voudrais peut-être insérer différents gestionnaires SAX lorsque vous rencontrez des éléments différents, et les pousser/les sortir d'une pile. Ainsi, lorsque vous rencontrez un élément <abstract>, vous insérez un nouveau gestionnaire auquel l'analyseur syntaxique SAX délègue, et est assez intelligent pour traiter vos éléments HTML selon vos besoins. Pas une solution triviale, j'en ai peur.

+0

Même de cette façon, je vais devoir convertir les données passées dans startElement() en XML. Je pense que cela perdrait du temps: SAX analyserait XML en objets Java et je les convertirais au XML. Quoi qu'il en soit, j'accepte cette réponse car la question était de savoir s'il y a un tel moyen, donc la réponse "non" est légale :) – jutky

+0

Si vous voulez vraiment ignorer les tags, alors vous devrez utiliser la possibilité d'accès aléatoire non avilabe dans SAX ou StAX , essayez DOM, jDOM, vtd-xml etc –

Questions connexes