web-dev-qa-db-fra.com

Convertir un objet XML en objet JSON sous Android

J'ai une chaîne XML comme indiqué ci-dessous:

<s:Envelope 
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><Response 
xmlns="http://tempuri.org/"><UserResult><Users xmlns=""><User>
<Message>Success</Message>
<UserId>213213213</UserId>
<FullName>Abc</FullName>
<Roles>
<Role>
<RoleId>23232333</RoleId>
<RoleName>Salesperson</RoleName>
</Role>
</Roles>
</User>
</Users>
</UserResult></Response>
</s:Body>
</s:Envelope>

Est-il possible de convertir XML en JSON?

17
sharry

Vous pouvez essayer de cette façon aussi. J'ai essayé et testé moi-même.

Étape 1: Téléchargez le fichier Java-json.jar

Étape 2: Ajoutez ceci au dossier /libs de votre projet puis ajoutez-le au chemin de construction.

Étape 3: Ensuite, utilisez-le comme suit 

  • Importations à rechercher

    import org.json.JSONException;
    import org.json.JSONObject;
    import org.json.XML;
    
  • Exemple de chaîne

    String sampleXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
        + "<mobilegate>"    
    +"<timestamp>232423423423</timestamp>"                          
    + "<txn>" + "Transaction" + "</txn>" 
    + "<amt>" + 0 + "</amt>" 
    + "</mobilegate>"; 
    
  • Json String

    JSONObject jsonObj = null;
    try {
        jsonObj = XML.toJSONObject(sampleXml);
    } catch (JSONException e) {
        Log.e("JSON exception", e.getMessage());
        e.printStackTrace();
    } 
    
    Log.d("XML", sampleXml);
    
    Log.d("JSON", jsonObj.toString());
    

Sortie:

XML: 

<?xml version="1.0" encoding="utf-8"?><mobilegate><timestamp>232423423423</timestamp><txn>Transaction</txn><amt>0</amt></mobilegate>

JSON: 

{"mobilegate":{"timestamp":232423423423,"amt":0,"txn":"Transaction"}}

65
Ritesh Gune

Je viens de publier une bibliothèque "XML to JSON" pour Android Studio . Elle est facile à intégrer à Gradle, simple à utiliser et configurable.

XmlToJson est disponible sur GitHub:

https://github.com/smart-fun/XmlToJson

prendre plaisir!

6
Arnaud SmartFun

Je vous suggérerais d'utiliser json-lib, une bibliothèque qui ajoute JSON support to any Java program. json-lib peut prendre XML et le convertir en objet JSON.

Vous pouvez obtenir json-lib ici

Par exemple.

String xml = "your xml string";                
XMLSerializer xmlSerializer = new XMLSerializer(); 
JSON json = xmlSerializer.read( xml );
2
Ritesh Gune

Underscore-Java a la méthode statique U.xmlToJson (xml). Je suis le mainteneur du projet. Exemple live

import com.github.underscore.lodash.U;

U.xmlToJson("<a>\n  <b></b>\n  <b></b>\n</a>");
0

Vous pouvez convertir xml en objets jackson, puis utiliser jackson json.

J'ai essayé d'ajouter le support XmlPull à jackson xml. Trouvez le projet forké ici:

https://github.com/finvu/jackson-dataformat-xml

Actuellement, uniquement pris en charge pour la version 2.9.6. (clonez la branche jackson-dataformat-xml-2.9.6-XmlPull)

Désolé, je ne suis pas en mesure de fournir une documentation détaillée en raison de contraintes de temps. Si vous avez des connaissances de git et maven pour tirer une branche spécifique et construire le pot, alors cela devrait être relativement facile.

La documentation Jackson xml se trouve sur la page d'accueil de jackson xml git ici:

https://github.com/finvu/jackson-dataformat-xml/tree/jackson-dataformat-xml-2.9.6-XmlPull

0
praveenp