一、xml解析
对xml文件进行操作,包括创建xml,对xml文件进行增删改查操作。
1 常见的xml解析技术
DOM解析
官方提供的解析方式(sun)
基于xml树解析。
SAX解析
是民间解析方式,基于事件的解析
适用于数据量较大的XML.
JDOM解析
开放源码,比DOM更快,使用类
DOM4J解析
第三方,开源免费,是JDOM的升级版,使用接口
本文使用DOM4J方法解析
二、基于Dom4J解析xml文件,输出至文件中
1.jar包引用
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.67_noneautotype2</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
2.工具类
代码如下(示例):
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.*;
import org.springframework.util.CollectionUtils;
import java.util.*;
/**
* <h2>基于Dom4J解析xml字符串</h2>
* <pre></pre>
*
* @author david
* @version v2.0
* @className Dom4jParseXml
* @createTime 2023/7/20 16:38
*/
public class Dom4jParseXmlUtils {
public static String xmlToJson(String xmlPath) {
String xmlString = "";
try {
// 读取xml文件,转换成Document结点
Document doc = DocumentHelper.parseText(xmlPath);
// xml文档信息
LinkedHashMap<String, Object> jsonObject = new LinkedHashMap<>();
Element root = doc.getRootElement();
elementjosn(root, jsonObject);
//xml命名空间声明信息
LinkedHashMap<String, Object> nameSpace = getNameSpace(root);
//组装
LinkedHashMap<String, Object> hashMap = new LinkedHashMap<>();
Object obj = jsonObject.get(root.getName());
nameSpace.putAll((Map<String, Object>) obj);
hashMap.put(root.getName(), nameSpace);
xmlString = JSON.toJSONString(hashMap);
System.out.println(xmlString);
} catch (