Je développe actuellement une application qui récupère des données d'Internet en utilisant saxo. Je l'ai déjà utilisé pour analyser de simples fichiers XML tels que Google Weather API. Cependant, les sites Web que je suis intéressé à adopter un analysement au niveau suivant. La page est énorme et a l'air désordonnée. Je n'ai besoin que de récupérer des lignes spécifiques; Le reste n'est pas utile pour moi.
Est-il possible de sauter ces lignes / tags inutiles ou dois-je aller étape par étape? P>
7 Réponses :
Oui, vous pouvez sauter. Définissez simplement ces balises que vous voulez et cela ne cherchera que ces valeurs de balise. p>
Vous pouvez essayer d'utiliser XPath qui utilisera SAX derrière la scène pour analyser votre XML. L'inconvénient est que XML sera analysé sur chaque appel de la méthode d'évaluation XPath. P>
Merci pour votre réponse, je vais examiner cette possibilité!
Vous souhaitez lire des balises spécifiques, l'analyseur DOM est beaucoup plus rapide que Sax Parser..sax Parser est utile si vous souhaitez analyser de gros fichiers XML. P>
L'analyse de la SAX est beaucoup plus rapide que DOM. DOM exige également que l'ensemble du document soit mis en mémoire.
Merci beaucoup pour votre réponse, j'apprécie vraiment votre aide, j'essaierai d'utiliser Dom et de voir les sorties que je reçois!
Oui, vous pouvez simplement le faire, ignorez simplement les tags que vous n'êtes pas intéressé. Mais notez que l'ensemble du document devra être analysé pour cela (DEFAULTHANDLER IMP)
public startElement(String uri, String localName, String qName, Attributes attributes) { if(localName.equals("myInterestingTag") { // do your thing.... } } public void endElement(String uri, String localName, String qName) { if(localName.equals("myInterestingTag") { // do your thing.... } } public void characters(char[] ch, int start, int length) { // if parsing myinteresting tag... do some stuff. }
Merci, c'est exactement comment je le fais habituellement;)!
Vous pouvez essayer une combinaison de tagsoup pour créer un document XML analysé et XPath pour récupérer les parties intéressantes. P>
Malheureusement, utiliser xpath n'est pas si facile sur Android
Voir ma réponse à une question similaire pour une stratégie d'utilisation de saxo à sauter / ignorer les balises: p>
Il implique de changer de contenu de contenu sur le xmlreader. Lorsque vous lisez un portage du document XML, vous souhaitez vous sauter simplement échanger dans un contenu de contenu qui ne fait rien avec les événements. Lorsque la fin de la section à ignorer est atteinte, il passe le contrôle du gestionnaire de contenu que vous utilisiez pour traiter le contenu XML. P>
Votre réponse aidera certainement à atteindre mon objectif! merci beaucoup -cheers
J'aime les communes-digestester. Il vous permet de spécifier des règles contre des balises particulières. La règle n'est exécutée que lorsque la balise est rencontrée. p>
digesther est construit sur SAX et dispose donc de toutes les fonctionnalités SAX et de la spécificité requise pour analyser sélectivement des balises spécifiques. Il utilise également une pile qui est poussée avec de nouveaux éléments comme et lorsque la balise correspondante est rencontrée et est apparue lorsque l'élément se termine. p>
Je l'utilise pour analyser tous mes fichiers de configuration. p>
Vérifiez digester chez http://commons.apache.org/digester/ p>
Merci beaucoup Raja, je vais regarder dans cette solution !!
Je pense que VTD-XML étendu vous permet d'accéder à XML avec un accès aléatoire à la mémoire efficace de la mémoire, bien mieux que la SAX ou Digester Apache