java - 如何将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,
如何解决这个错误,我被传递的网址是
解决方案
有两种方法可以创建 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 }
推荐阅读
- python - 列表python中子列表中元素的索引
- r - 根据最大值缩放数字
- java - 如何通过 Java 17 中的反射获取所有 Record 字段及其值?
- kendo-ui - 如何使用静态 HTML 标记作为视图,而不是在 Kendo 滚动视图中使用数据
- inno-setup - Inno Setup:在卸载程序的 UAC 提示中替换“设置/卸载”字符串
- embedded-linux - 嵌入式硬件上的 DBus 权限被拒绝
- python - 如何在不使用字段名的情况下运行 django orm 查询?
- python - 由于 python 中的 sympy,如何求解简单的矩阵方程?
- elasticsearch - 如何在 kibana devtools 中将自定义数据传递给响应
- amazon-cloudwatch - AWS Cloudwatch Logs Insights:查询到数组