学习目标:
后端取出json中的自定义标签或者html标签中的值
不多bb 上代码
学习内容:
:
1、使用工具类【注意:这里的标签可以是html标签也可以是自定义标签,但是必须要在外面套一层根节点<根节点></根节点>否则解析出错】
`package com.csdn.demo_ds.json数据转化;
import com.alibaba.fastjson.JSONObject;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
* @ClassName XmlToJsonUtils
* @Description
* @date 2020-11-10 10:49
*/
public class XmlToJsonUtils {
/**
* 转换一个xml格式的字符串到json格式
*
* @param xml
* xml格式的字符串
* @return 成功返回json 格式的字符串;失败反回null
*/
@SuppressWarnings("unchecked")
public static String xmlToJSON(String xml) {
JSONObject obj = new JSONObject();
try {
InputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(is);
Element root = doc.getRootElement();
obj.put(root.getName(), iterateElement(root));
return obj.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 转换一个xml格式的字符串到json格式
*
* @param file
* java.io.File实例是一个有效的xml文件
* @return 成功反回json 格式的字符串;失败反回null
*/
@SuppressWarnings("unchecked")
public static String xmlToJSON(File file) {
JSONObject obj = new JSONObject();
try {
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(file);
Element root = doc.getRootElement();
obj.put(root.getName(), iterateElement(root));
return obj.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 一个迭代方法
*
* @param element
* : org.jdom.Element
* @return java.util.Map 实例
*/
@SuppressWarnings("unchecked")
private static Map iterateElement(Element element) {
List jiedian = element.getChildren();
Element et = null;
Map obj = new HashMap();
List list = null;
for (int i = 0; i < jiedian.size(); i++) {
list = new LinkedList();
et = (Element) jiedian.get(i);
if (et.getTextTrim().equals("")) {
if (et.getChildren().size() == 0)
continue;
if (obj.containsKey(et.getName())) {
list = (List) obj.get(et.getName());
}
list.add(iterateElement(et));
obj.put(et.getName(), list);
} else {
if (obj.containsKey(et.getName())) {
list = (List) obj.get(et.getName());
}
list.add(et.getTextTrim());
obj.put(et.getName(), list);
}
}
return obj;
}
// 测试
public static void main(String[] args) {
//结果 {"aa":{"ERRMSG":["找死"],"ZXZT00":["1"]}}
System.out.println(XmlToJsonUtils.xmlToJSON("<aa><ZXZT00>1</ZXZT00><ERRMSG>找死</ERRMSG></aa>"));
}
}
2、 采用字符串截取的方法: 3、package com.csdn.demo_ds.Strig字符串方法;
import org.apache.commons.lang3.StringUtils;
/**
* @author Administrator
* @ClassName StringUtil
* @Description
* @date 2020-11-10 14:00
*/
public class StringUtil {
public static void main(String[] args) {
String param="<ZXZT00>1</ZXZT00><ERRMSG>查询错误</ERRMSG>";
String s = StringUtils.substringBefore(param, "</ZXZT00>");
String s1 = StringUtils.substringAfter(s, "<ZXZT00>");
System.out.println(s1); //1
String s2 = StringUtils.substringBefore(param, "</ERRMSG>");
String s3 = StringUtils.substringAfter(s2, "<ERRMSG>");
System.out.println(s3);//查询错误
}
}
本文介绍了一种将XML格式数据转换为JSON格式的有效方法。通过Java实现的工具类,支持从字符串或文件中读取XML数据,并能处理自定义或HTML标签。此外,还提供了一种简单的字符串截取方法来提取特定标签的值。
419





