Utilisation d'une URL de recherche Twitter, c'est-à-dire. http://search.twitter.com/search.rss?q=android Retourne CSS qui a un élément qui ressemble à: assez simple. Mon code analyse tout (titre, lien, description, pubdate, etc.) sans aucun problème. Cependant, je reçois NULL ON: P> @Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
super.startElement(uri, localName, name, attributes);
if (localName.equalsIgnoreCase(ITEM)){
this.currentMessage = new Message();
}
}
5 Réponses :
Un élément comme Par exemple, quelques interfaces SAX1 dans
image_link code> appartenant à la
Google code> Espace de noms. Vous devez vous assurer que le cadre d'analyse XML est au courant des espaces de noms, et vous devez alors trouver cet élément à l'aide de l'espace de noms approprié. P>
package org.xml.sax code>
a été obsolète, remplacé par des homologues SAX2 qui incluent la prise en charge de l'espace de noms (par exemple, sax1 anal code>
est obsolète et remplacé par SAX2 xmlreader code> a >). Consultez la documentation sur la manière de spécifier l'espace de noms
URI code> ou qualifié (préfixé)
qname code>. P>
Voir aussi h3>
J'utilise le cadre d'analyse de la SAX (je crois). Je suis tout neuf à Java.
@Silvestri: Pouvez-vous ajouter un extrait de code pour montrer comment vous faites cela?
Il suffit d'ajouter des extraits de code et je lis à travers les docs maintenant. Toujours pas clair sur la façon dont je vais accomplir cela, mais j'aurais imaginé que cela soit super simple.
@Silvestri: Je pense qu'il y a plusieurs façons de faire cela qui serait plus facile, par exemple XPath, ou digesteur Apache. Soyez assuré que je travaille toujours sur cela.
@Silvestri: Découvrez l'approche XPath: Ideone.com/uqkqu ; Découvrez le digesteur Apache aussi, il suffirait de simplifier le code aussi. Je reviendrai à cette demain, j'espère que d'autres vous donneront également de bonnes réponses d'ici là.
J'ai pensé utiliser xpath. Je l'ai utilisé dans beaucoup, mais je ne suis pas sûr que nous utiliserions XPath avec ce projet. L'application que je consomme est pour Android, donc je suis inquiet, cela pourrait ajouter des frais généraux supplémentaires, mais je vais y examiner de toute façon. Préférerait utiliser l'analyseur Sax à moins que je n'ai aucune autre option. En tout cas, merci!
@Silvestri: Voici un code rapide et sale que j'ai écrit en fonction de sax2, des noms qualifiés semblent bien fonctionner pour moi. ideone.com/caoh7
@polygenelubrançants La façon dont votre lien ideone.com/caoh7 a suggéré de travailler pour moi.don ne sais pas si c'est juste chemin ou pas.
de l'échantillon, il n'est pas effectivement clair de quel espace de noms que le préfixe "Google" se lie à - La réponse précédente est légèrement incorrecte en ce sens que ce n'est pas dans l'espace de nom "Google"; C'est plutôt un espace de noms qui préfixe "Google" se lie à. En tant que tel, vous devez correspondre à l'espace de noms (identifié par URI) et non préfixe. SAX a une manière confuse de signaler les combinaisons de noms de noms / espaces de noms locaux, et cela dépend de la question de savoir si le traitement des espaces de noms est même activé. P>
Vous pouvez également envisager de nombreuses bibliothèques / API de traitement XML alternatifs; Bien que les implémentations de SAX sont performantes, il existe des alternatives aussi rapides et plus pratiques. Stax (javax.xml.stream. *) Des implémentations comme Woodstox (et même par défaut que JDK 1.6 est livrée avec) sont rapides et peu plus pratiques. Et Staxmate bibliothèque qui se situe au-dessus de Stax est beaucoup plus simple à utiliser pour la lecture et l'écriture et rapidement. comme des implémentations saxoques comme Xerces. Plus l'API STAX a moins de bagages de la gestion des espaces de noms WRT, il est donc plus facile de voir quel est l'espace de noms réel des éléments. P>
+1, merci pour la correction. Je vous donne la permission de modifier ma réponse pour corriger les erreurs, ou d'extraire simplement des pièces dans la soirée avec la correction, etc.
Merci. Je ne semble pas avoir accès à la modification, mais je pense que c'est bien de simplement changer de libellé pour mentionner l'indirection?
Comme les polygénitants de l'utilisateur ont déclaré: Généralement, l'analyseur doit être un espace de noms sensible à gérer les éléments appartenant à un espace de noms préfixé. (Comme ça Ceci doit être défini comme une "fonctionnalité d'analyseur" que AFaik peut être effectué de différentes manières: l'interface xmlreader elle-même a la méthode Pour des documents simples, vous pouvez essayer de prendre un raccourci. Si vous ne vous souciez pas réellement des espaces de noms et des noms d'élément comme dans une combinaison URL + nom de nom local, vous pouvez faire confiance aux éléments que vous recherchez (et seulement ceux-ci) ont toujours un certain préfixe et qu'il n'y a pas d'éléments de autres espaces de noms avec le même nom local, vous pouvez simplement résoudre votre problème en utilisant Le contenu des paramètres ps. XML est sensible à la casse. Donc, idéalement, vous n'avez pas besoin d'ignorer la case dans la comparaison des chaînes de nom de balise.
setfeature () code> qui peut être utilisé pour définir des fonctionnalités pour un certain analyseur mais vous pouvez également utiliser la même méthode pour la classe SaxParseFactory afin que cette usine génère des analyseurs avec ces fonctionnalités déjà activées ou désactivées. Les drapeaux de fonctionnalité standard SAX2 doivent figurer sur le site Web de SaxProject, mais au moins certains d'entre eux sont également répertoriés dans la documentation de l'API de Java de Package org.xml.sax . P>
qname code> paramètre de
startelement () code> méthode au lieu de
localName code> ou inversement ou En ajoutant / laissant tomber le préfixe de la chaîne de nom de balise, vous comparez à. p>
nomspaceuri code>,
qname code> ou
localName code> est en fonction des spécifications Java en option et afaik ils pourraient être
null < / code> pour cette raison. Lesquels d'entre eux sont
null code> dépend de quelles sont les "fonctionnalités d'analyseurs" susmentionnées qui affectent les espaces de noms. Je ne sais pas que le paramètre est code> NULL code> varie entre les éléments d'un espace de noms et des éléments sans espace de noms - je n'ai pas étudié ce comportement. P>
-First post, YAY! P>
Peut aider quelqu'un à utiliser le Android SAX UTIL . J'essayais Geo: Laacheminez à obtenir le formulaire de lat de l'espace géographique.
échantillon xml: p> première tentative renvoyée null: p> comme suggéré ci-dessus, j'ai trouvé passer l'espace de noms URI à la méthode getchild a fonctionné. p>
Utilisation de la méthode StartPrefixMapping de mon gestionnaire XML, j'ai pu analyser le texte d'un espace de noms.
J'ai placé plusieurs appels vers cette méthode sous mon instanciation de manutention. P>
GoogleReader xmlhandler = new GoogleReader(); xmlhandler.startPrefixMapping("dc", "http://purl.org/dc/elements/1.1/");
Pouvez-vous clarifier ce que "Cependant, je reçois null sur code>" signifie?