Autore Topic: Estrarre dati da stringa XML + conversione caratteri  (Letto 1395 volte)

Offline cretara

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Virtual devices
  • Sistema operativo:
    windows7
Estrarre dati da stringa XML + conversione caratteri
« il: 07 Marzo 2012, 16:05:25 CET »
0
Salve, ho la seguente stringa XML che rappresenta il risultato di un'interrogazione ad un server web.
Ho bisogno di estrarre la riga all'interno del tag <LoginResult> e successivamente di convertire tale stringa in XML

In pratica devo recuperare i dati presenti all'interno del TAG <LoginResult>.
Non so perchè, ma al posto di "<" e ">" ci sono i caratteri "&lt;" e "&gt".

I tutorial che ho trovato sono quasi tutti per file.XML e non per stringhe.

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<WsAuthentication xmlns="http://microsoft.com/webservices/">
        <Username>XXX</Username>
        <Password>YYY</Password>
</WsAuthentication>
</soap:Header>
<soap:Body>
        <LoginResponse xmlns="http://microsoft.com/webservices/">
                <LoginResult>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;DtoCliente xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;&lt;idCliente&gt;1&lt;/idCliente&gt;&lt;email&gt;MAIL&lt;/email&gt;&lt;nome&gt;NOME&lt;/nome&gt;&lt;cognome&gt;COGNOME&lt;/cognome&gt;&lt;/DtoCliente&gt;</LoginResult>
        </LoginResponse>
</soap:Body>
</soap:Envelope>

GRAZIE

Offline Zappescu

  • Utente junior
  • **
  • Post: 110
  • Respect: +7
    • Mostra profilo
    • Tic Tank Toe
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    Zapmobilegames
  • Sistema operativo:
    Win XP
Re:Estrarre dati da stringa XML + conversione caratteri
« Risposta #1 il: 09 Marzo 2012, 19:21:50 CET »
0
Ciao,
io faccio così:
1) mi prendo l'xml come Inpoutstream (output = new BufferedInputStream(new FileInputStream(file_output)); )
2) costruisco un Document (DocumentBuilder doc = docBuild.parse(inStream); )
3) creo una mappa ArrayList<HashMap<String, String>> lista_immagini_buttons = new ArrayList<HashMap<String, String>>();
4) scorro gli item e li metto nella mappa:
Codice (Java): [Seleziona]
if (doc!=null) {
               
                NodeList nodes = doc.getElementsByTagName(TAG_ITEM_IMAGE);
               
                for (int i = 0; i < nodes.getLength(); i++)
                {                                                      
                        HashMap<String, String> map = new HashMap<String, String>();   
                       
                        Element e = (Element)nodes.item(i);
                map.put(TAG_ID_IMAGE, Leggi_XML.getValue(e, TAG_ID_IMAGE));
                        map.put(TAG_LOCAL_LINK_IMAGE, Leggi_XML.getValue(e, TAG_LOCAL_LINK_IMAGE));
                       
                        lista_immagini_buttons.add(map);
                }
        } else {
                Toast.makeText(this,
                    "Errore",
                    Toast.LENGTH_SHORT).show();
        }

Per prendere le stringhe dai nodi uso:
Codice (Java): [Seleziona]
public static String getValue(Element item, String str) {              
                NodeList n = item.getElementsByTagName(str);           
                return Leggi_XML.getElementValue(n.item(0));
        }

Alla fine, nellla mappa ho le corrospondenze tra i tag e ciò che contengono.

Non so se lo puoi adattare al tuo caso.
Zapmobilegames website
Tic Tank Toe: a new approach for a classic game

Offline pivoide

  • Utente junior
  • **
  • Post: 133
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab 10.1
  • Play Store ID:
    codicerosso
  • Sistema operativo:
    Ubuntu 11.04
Re:Estrarre dati da stringa XML + conversione caratteri
« Risposta #2 il: 10 Marzo 2012, 00:25:33 CET »
0
Non potrebbe bastare, chiamando sxml la tua stringa, questo codice?

int startLogin=sxml.indexOf("<LoginResult>");
int endLogin=sxml.indexOf("</LoginResult>");
String s=sxml.substring(startLogin+13,endLogin);
s=s.replace("&gt;",">");
s=s.replace("&lt;","<");

In s c'è il pezzo xml d'interesse
Odio l'inglese e per un informatico non è il massimo