Java 使用 Dom4j 将 XML 字符串中的 Channel 标签数据转换为 JSON 格式
Java 使用 Dom4j 将 XML 字符串中的 Channel 标签数据转换为 JSON 格式
本文介绍如何使用 Java 的 Dom4j 库将 XML 字符串中的 Channel 标签数据转换为 JSON 格式。
示例 XML 数据:
<Organization>
<Department></Department>
<Devices>
<Device id='1000028' type='601' name='报警主机'>
<UnitNodes index='0' channelnum='60' type='3'>
<Channel id='1000028$3$0$0' name='防区1' desc='' status='0' channelType='0' channelSN='' rights='11000000000000000000000011101000000101100011111111111111111' alarmType='80081' alarmLevel='1' />
</UnitNodes>
</Device>
</Devices>
</Organization>
**目标:**将 Channel 标签中的所有数据转化为 JSON 格式。
代码示例:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.List;
public class XMLToJsonConverter {
public static void main(String[] args) {
String xml = "<Organization><Department></Department><Devices><Device></Device></Devices></Organization>";
String json = convertXmlToJson(xml);
System.out.println(json);
}
public static String convertXmlToJson(String xml) {
try {
Document document = new SAXReader().read(xml);
Element root = document.getRootElement();
Element device = root.element("Devices").element("Device");
Element unitNodes = device.element("UnitNodes");
Element channel = unitNodes.element("Channel");
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", device.attributeValue("id"));
jsonObject.put("type", device.attributeValue("type"));
jsonObject.put("name", device.attributeValue("name"));
JSONArray jsonArray = new JSONArray();
JSONObject channelJson = new JSONObject();
channelJson.put("id", channel.attributeValue("id"));
channelJson.put("name", channel.attributeValue("name"));
channelJson.put("desc", channel.attributeValue("desc"));
channelJson.put("status", channel.attributeValue("status"));
channelJson.put("channelType", channel.attributeValue("channelType"));
channelJson.put("channelSN", channel.attributeValue("channelSN"));
channelJson.put("rights", channel.attributeValue("rights"));
channelJson.put("alarmType", channel.attributeValue("alarmType"));
channelJson.put("alarmLevel", channel.attributeValue("alarmLevel"));
jsonArray.put(channelJson);
jsonObject.put("channels", jsonArray);
return jsonObject.toString();
} catch (DocumentException e) {
e.printStackTrace();
}
return null;
}
}
代码解释:
- 使用
SAXReader解析 XML 字符串。 - 获取
Device和Channel元素。 - 创建
JSONObject对象存储Device信息。 - 创建
JSONArray对象存储Channel信息。 - 遍历
Channel元素,将属性值存入JSONObject。 - 将
Channel对象添加到JSONArray。 - 将
JSONArray添加到JSONObject中。 - 返回 JSON 字符串。
注意:
- 确保项目中添加 Dom4j 和 JSON 依赖。
- 该示例只转换了一个
Channel元素,实际使用中可能需要遍历所有Channel元素。 - 可根据实际情况修改代码,例如添加其他标签的转换。
希望本文对您有所帮助!如有任何问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/fRaG 著作权归作者所有。请勿转载和采集!