首页 > 解决方案 > 如何将xml值解析为android中的json对象?

问题描述

我在下面的代码中用于将 xml 解析为 json,但它不起作用

 public void onClick(View view) {
        // detect the view that was "clicked"
        switch (view.getId()) {
        case R.id.button1:
            new LongOperation().execute("");
            break;
        }
    }

private class LongOperation extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
         String url = params[0];

        HttpClient httpClient = new DefaultHttpClient();
        HttpGet request = new HttpGet(url);           
        request.setHeader("Content-Type", "text/xml");
        HttpResponse response;
        try {
            response = httpClient.execute(request);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return response;
    }

    @Override
    protected void onPostExecute(String result) {
        // Result is in String Format
        // you can use JSON api to convert into JSONObject

    }

    @Override
    protected void onPreExecute() {}

    @Override
    protected void onProgressUpdate(Void... values) {}
}

我得到了错误 DefaultHttpClient file does't exist from DefaultHttpClient and HttpGet,如何解决这个错误,我被传递的网址是

http://webservices.amazon.in/onca/xml?AWSAccessKeyId=AKIAsfggVPWLGL2UIWB3SA&AssociateTag=projectr0c-21&Keywords=iphone&Operation=ItemSearch&ResponseGroup=ItemAttributes%2CImages&SearchIndex=All&Service=AWSECommerceService&Timestamp=2018-06-20T05%3A31%3A25Z&Signature=JIYJVsrpWz0xj3yWS0Pxgnx%2BPtLpD9bi%2Bjek% 2FhhQwN4%3D

标签: javaandroid

解决方案


有两种方法可以创建 XmlToJson 对象:从 String 或从 InputStream。

String xmlString; // some XML String previously created
XmlToJson xmlToJson = new XmlToJson.Builder(xmlString).build();

或者

AssetManager assetManager = context.getAssets();
InputStream inputStream = assetManager.open("myFile.xml");
XmlToJson xmlToJson = new XmlToJson.Builder(inputStream, null).build();
inputStream.close();

这是一个 XML 的示例...

<?xml version="1.0" encoding="utf-8"?>
<library>
<owner>John Doe</owner>
<book id="007">James Bond</book>
<book id="000">Book for the dummies</book>
</library>
... converted into JSON

{ 
"library":{
"owner": "John Doe",
"book":[ 
{ 
"id":"007",
"content":"James Bond"
},
{ 
"id":"000",
"content":"Book for the dummies"
}
]
}
}

自定义内容名称 默认情况下,XML 标记的内容被转换为称为“内容”的键。可以使用自定义名称更改此名称,使用 Builder.setContentName(String contentPath, String replacementName)。您可以根据需要更改任意数量的内容名称。

<?xml version="1.0" encoding="utf-8"?>
<library>
<book id="007">James Bond</book>
<book id="000">Book for the dummies</book>
</library>


public String convertXmlToJson(String xml) {
XmlToJson xmlToJson = new XmlToJson.Builder(xml).setContentName("/library/book", "title").build();
return xmlToJson.toString();
}

json

{ 
"library":{ 
"book":[ 
{ 
"id":"007",
"title":"James Bond"
},
{ 
"id":"000",
"title":"Book for the dummies"
}
]
}
}

将库依赖项添加到您的 APP build.gradle 文件中

 dependencies { implementation 'com.github.smart-fun:XmlToJson:1.4.4' // add this line } 

推荐阅读