2013-09-22 4 views
0

Voici ce que j'essaie: J'ai une liste de noms. Je veux rechercher un fichier XML en fonction de ces noms.Android de recherche XML basé sur une condition

XML ressemble à ceci:

<book> 
     <string> book name </string> 
     <array> 
      <string> Name1 </string> 
      <string> Name2 </string> 
     </array> 
    </book> 

Maintenant, je veux dire la recherche « Name1 » et si elle correspond je veux obtenir le nom du livre. Est-ce possible? Si oui, quelqu'un peut-il fournir du code/extrait ou peut-être me dire les étapes à suivre pour le faire. Merci

Répondre

0

Merci à tous pour les réponses. J'utilise l'utilisation du tutoriel here et écrit cette méthode pour rechercher le XML.

 public List<String> search(String key, String url){ 

      List<String> items = new ArrayList<String>(); 
      XmlParser parser = new XmlParser(); 
      String xml = parser.getXmlFromUrl(url); // getting XML 
      Document doc = parser.getDomElement(xml); 
      NodeList nl = doc.getElementsByTagName("book"); 

      for(int i = 0; i<nl.getLength();i++){ 
       Element e = (Element) nl.item(i); 
       NodeList n = e.getElementsByTagName("string"); 
       if(parser.getElementValue(n.item(1)).equals(key) || 
       parser.getElementValue(n.item(2)).equals(key)){ 

       items.add(parser.getElementValue(n.item(0))); 
       } 
      } 
      return items; 
     } 
0

Android possède certaines fonctions d'analyse XML intégrées. Jetez un oeil à http://developer.android.com/training/basics/network-ops/xml.html

En gros:

1) Mettre en place un InputStream pour le contenu XML (si vous téléchargez, ou le lire à partir d'un getResources() par exemple)

2) Ensemble votre analyseur: XmlPullParser parser = Xml.newPullParser();

3) Commencer à lire le XML en boucle. Lorsque parser.getName(). Est égal à ("book"), continuez jusqu'à ce que vous arriviez à votre parser.getName().equals("string") et enregistrez les résultats de parser.getText(); Ensuite, lorsque vous continuez et appuyez sur parser.getName().equals("array") et vous continuez à parser.getName().equals("string"), puis vérifiez les résultats de parser.getText() pour voir si elle correspond à votre chaîne de recherche.

Clair comme de la boue?

L'analyse XML est beaucoup plus difficile qu'elle ne l'était il y a 20 ans, mais une fois que vous avez compris que l'analyseur lit le XML au fur et à mesure, il devient plus facile de voir pour l'implémenter. Étudier sur ce lien, il vous donne tout ce que vous devez savoir.

0

Il y a beaucoup de façons de parser XML, je vous suggère d'utiliser Jsoup

Il est vraiment facile à extraire des données XML.

String html = "<?xml version=\"1.0\" encoding=\"UTF-8\"> 
<book> 
    <string> book name </string> 
    <array> 
     <string> Name1 </string> 
     <string> Name2 </string> 
    </array> 
</book></xml>"; 

Document doc = Jsoup.parse(html, "", Parser.xmlParser()); 

    Element book = doc.select("book").first(); 

    Element bookName = book.getElementsByTag("string").first(); 

    Elements array = book.getElementsByTag("array"); 

    for (Element e : array.select("string")) { 
     //.... 
    } 
Questions connexes