Конвертировать XML в объект JSON в Android

У меня есть строка XML, как показано ниже:

<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>

Можно ли конвертировать XML в JSON?

4 ответа

Решение

Вы также можете попробовать этот способ. Я попробовал и проверил это сам.

Шаг 1: Пожалуйста, загрузите java-json.jar

Шаг 2: Добавьте это к /libs папку вашего проекта, а затем добавить к пути сборки.

Шаг 3: Затем используйте его следующим образом

  • Импорт для поиска

    import org.json.JSONException;
    import org.json.JSONObject;
    import org.json.XML;
    
  • Образец строки

    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());
    

Выход:

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"}}

Я только что выпустил библиотеку "XML to JSON" для Android Studio. Его легко интегрировать с Gradle, просто использовать и настраивать.

XmlToJson доступен на GitHub:

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

наслаждаться!

Я бы предложил вам использовать json-libбиблиотека, которая добавляет JSON support to any Java program, json-lib может взять XML и преобразовать его в объект JSON.

Вы можете получить json-lib здесь

Например.

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

В Underscore-java есть статический метод U.xmlToJson(xml). Я поддерживаю проект.

import com.github.underscore.lodash.U;

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

Вы можете конвертировать XML в объекты Джексона, а затем можете использовать Джексона JSON.

Я попытался добавить поддержку XmlPull для Jackson XML. Найдите разветвленный проект здесь:

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

В настоящее время поддерживается только для версии 2.9.6. (клонируйте ветку jackson-dataformat-xml-2.9.6-XmlPull)

Извините, я не могу предоставить подробную документацию из-за нехватки времени. Если у вас есть знания git и maven, чтобы вытащить конкретную ветку и собрать jar, то это должно быть относительно просто.

Документацию по Jackson xml можно найти на домашней странице jackson xml git здесь:

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

Другие вопросы по тегам