大家好,又见面了,我是你们的朋友全栈君。
<?xml version="1.0" encoding="utf-8"?>
<!--每个协议有Request或Response两个节点,说明一个是请求,另一个假如请求成功,则返回相应结果 -->
<!-- 在请求时无Response节点,同样在返回时也没有Request节点-->
<Body >
<Request OrgCode='' OperType='1'>
<UserN></UserN>
<PassWord></PassWord>
</Request>
<!--ErrMsg:如果错误则此处是错误信息(如节点无效或条件不足等),不可预料错误则以Err开头,以及Response节点下不能有子节点 -->
<!--对于查询确实无符合条件的,则ErrMsg应该为空,只不过Response节点无子节点 -->
<Response ErrMsg=''>
<UserID>111</UserID>
<UserName></UserName>
<DoctorID></DoctorID>
<DoctorName></DoctorName>
<Province ID=''></Province>
<City ID=''></City>
<District ID=''></District>
<Street ID=''></Street>
<EmployeeNo ID=''></EmployeeNo>
<RoleCD></RoleCD>
<Zones>
<Zone ID=''></Zone>
</Zones>
</Response>
</Body>
引入pom
<!--解析xml报文-->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1-beta-6</version>
</dependency>
Java
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.*;
import java.util.*;
/** * xml 解析 * * @author 如漩涡 * @date 2021/6/10 */
public class XmlUtil {
/** * XML节点转换JSON对象 * * @param element 节点 * @param object 新的JSON存储 * @return JSON对象 */
private static JSONObject xmlToJson(Element element, JSONObject object) {
List<Element> elements = element.elements();
for (Element child : elements) {
Object value = object.get(child.getName());
Object newValue;
if (child.elements().size() > 0) {
JSONObject jsonObject = xmlToJson(child, new JSONObject(true));
if (!jsonObject.isEmpty()) {
newValue = jsonObject;
} else {
newValue = child.getText();
}
} else {
newValue = child.getText();
}
List<Attribute> attributes = child.attributes();
if (!attributes.isEmpty()) {
JSONObject attrJsonObject = new JSONObject();
for (Attribute attribute : attributes) {
attrJsonObject.put(attribute.getName(), attribute.getText());
attrJsonObject.put("content", newValue);
}
newValue = attrJsonObject;
}
if (newValue != null) {
if (value != null) {
if (value instanceof JSONArray) {
((JSONArray) value).add(newValue);
} else {
JSONArray array = new JSONArray();
array.add(value);
array.add(newValue);
object.put(child.getName(), array);
}
} else {
object.put(child.getName(), newValue);
}
}
}
return object;
}
/** * XML字符串转换JSON对象 * * @param xmlStr XML字符串 * @return JSON对象 */
public static JSONObject xmlToJson(String xmlStr) {
JSONObject result = new JSONObject(true);
SAXReader xmlReader = new SAXReader();
try {
Document document = xmlReader.read(new StringReader(xmlStr));
Element element = document.getRootElement();
return xmlToJson(element, result);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/** * XML文件转换JSON对象 * * @param file 文件路径 * @param node 选择节点 * @return JSON对象 */
public static JSONObject xmlToJson(File file, String node) {
JSONObject result = new JSONObject(true);
SAXReader xmlReader = new SAXReader();
try {
Document document = xmlReader.read(file);
Element element;
if (StringUtils.isBlank(node)) {
element = document.getRootElement();
} else {
element = (Element) document.selectSingleNode(node);
}
return xmlToJson(element, result);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
System.out.println(xmlToJson(new File("C:\\Users\\如漩涡\\Desktop\\PAD\\1 用户登录验证.xml"), "Body/Response"));
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162472.html原文链接:https://javaforall.cn