JXAB解析
用途:使用JXAB进行接口解析时候XML格式与对象之间进行转换
test类xmltobean
package demo;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class XmlToBean {
/**
* xml文件配置转换为对象
* @param xmlPath xml文件路径
* @param load java对象.Class
* @return java对象
* @throws JAXBException
* @throws IOException
*/
public static Object xmlToBean(String xmlPath,Class<?> load) throws JAXBException, IOException{
JAXBContext context = JAXBContext.newInstance(load);
Unmarshaller unmarshaller = context.createUnmarshaller();
Object object = unmarshaller.unmarshal(new File(xmlPath));`
return object;
}
public static void main(String[] args) throws IOException, JAXBException {
String xmlPath = "D:/testConfig.xml";
// Object object = XmlToBean.xmlToBean(xmlPath,StudentList.class);
// Body body = (Body)XmlToBean.xmlToBean(xmlPath,Body.class);
Ap o = (Ap)XmlToBean.xmlToBean(xmlPath, Ap.class);
StudentList students = o.getBody().getStudentList();
List<Student1> studentList = students.getStudents();
System.out.println(studentList);
}
}
testConfig.xml 格式
```java
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ap>
<head>
<aa>aa</aa>
<bb>bb</bb>
</head>
<body>
<array>
<dto>
<name>张三</name>
<number>10001</number>
<sex>男</sex>
</dto>
<dto>
<name>李四</name>
<number>10002</number>
<sex>男</sex>
</dto>
<dto>
<name>莉莉</name>
<number>10003</number>
<sex>女</sex>
</dto>
</array>
</body>
</ap>
beanToXml
package demo;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class BeanToXml {
/**
* java对象转换为xml文件
* @param
* @param load java对象.Class
* @return xml文件的String
* @throws JAXBException
*/
public static String beanToXml(Object obj,Class<?> load) throws JAXBException{
JAXBContext context = JAXBContext.newInstance(load);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
StringWriter writer = new StringWriter();
marshaller.marshal(obj,writer);
return writer.toString();
}
AP类
package demo;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
/**
* @author xuhw
* @Title
* @Description
* @date 2021/11/4 20:53
*/
@XmlRootElement(name="ap")
@XmlAccessorType(XmlAccessType.FIELD)
public class Ap {
@XmlElement(name="head")
private Head head;
@XmlElement(name="body")
private Body body;
public Head getHead() {
return head;
}
public void setHead(Head head) {
this.head = head;
}
public Body getBody() {
return body;
}
public void setBody(Body body) {
this.body = body;
}
public static void main(String[] args) {
ArrayList aa = null;
for (Object o : aa) {
System.out.println(o);
}
}
}
Body
package demo;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* @author xuhw
* @Title
* @Description
* @date 2021/11/4 20:39
*/
@XmlAccessorType(XmlAccessType.FIELD)
public class Body {
@XmlElement(name="array")
private StudentList studentList;
public StudentList getStudentList() {
return studentList;
}
public void setStudentList(StudentList studentList) {
this.studentList = studentList;
}
}
Head
package demo;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
/**
* @author xuhw
* @Title
* @Description
* @date 2021/11/4 20:54
*/
@XmlAccessorType(XmlAccessType.FIELD)
public class Head {
private String aa;
private String bb;
public String getAa() {
return aa;
}
public void setAa(String aa) {
this.aa = aa;
}
public String getBb() {
return bb;
}
public void setBb(String bb) {
this.bb = bb;
}
}
StudentList
package demo;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
public class StudentList {
List<Student1> students; //所有学生信息的集合
@XmlElement(name = "dto")
public List<Student1> getStudents() {
return students;
}
public void setStudents(List<Student1> students) {
this.students = students;
}
}
Student
package demo;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
/**
* @author xuhw
* @Title
* @Description
* @date 2021/11/4 20:28
*/
@XmlAccessorType(XmlAccessType.FIELD)
public class Student1 {
private String name;
private String number;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}