2010-11-29 31 views
0

je la sortie XML suivante:Comment extraire ces données XML?

<info> 
    <ip>70.56.98.195</ip> 
    <host>70-56-98-195.slkc.qwest.net</host> 
    <country>UNITED STATES</country> 
    <cimg>http://localhost/ip-to-country/country-flags/us.png</cimg> 
</info> 
<searches> 
    <ips link="http://www.stopforumspam.com/search?q=70.56.98.195" title="Stop Forum Spam"></ips> 
    <ips link="http://openrbl.org/client/#70.56.98.195" title="Openrbl DNSBL RBL Blacklist"></ips> 
    <ips link="http://www.afrinic.net/cgi-bin/whois?searchtext=70.56.98.195" title="AfriNIC (Africa)"></ips> 
    <ips link="http://www.apnic.net/apnic-bin/whois2.pl?searchtext=70.56.98.195" title="APNIC (Asia Pacific region)"></ips> 
    <ips link="http://ws.arin.net/cgi-bin/whois.pl?queryinput=70.56.98.195" title="ARIN (North America, a portion of the Caribbean and sub-Saharan Africa)"></ips> 
    <ips link="http://lacnic.net/cgi-bin/lacnic/whois?query=70.56.98.195" title="LACNIC (Latin American and Caribbean region)"></ips> 
    <ips link="http://www.ripe.net/perl/whois?searchtext=70.56.98.195" title="RIPE (Europe, the Middle East and parts of Africa and Asia)"></ips> 
    <ips link="http://www.robtex.com/ip/70.56.98.195.html" title="Robtex"></ips> 
</searches> 

Ma question est, quelle est la meilleure façon de tirer que les données sur et est-il une meilleure façon que je devrais en mettre mes données XML?

+1

Vous avez écrit * "Existe-t-il un meilleur moyen de sortir mes données XML?" *. Que diriez-vous d'un document XML bien formé ?! :) –

Répondre

1

Un très bon outil pour cela est Simple. Un que vous auriez à faire est d'écrire un objet simple pour sérialiser les données dans. Par exemple.

@Default 
private class Structure { 

    @Path("info") 
    private String ip; 

    @Path("host") 
    private String host; 

    @Path("path") 
    private String country; 

    @Path("path") 
    private String cimg; 

    @ElementList 
    private List<Entry> searches; 

    @Root 
    private static class Entry { 

     @Attribute 
     private String link; 

     @Attribute 
     private String title; 
    } 
} 

Ensuite, tout ce que vous auriez à faire est de lire les données dans une instance d'objet.

Serializer serializer = new Persister(); 
Structure structure = serializer.read(Structure.class, inputStream); 

Ce cadre fonctionne pour à peu près toutes les versions d'Android. Pour plus d'informations, il existe un Tutorial.