jaxb 解析xml
<!--原xml-->
代码
<?xml version="1.0" encoding="gb2312"?>
<people>
<student>
<name>学生姓名</name>
<age>23</age>
</student>
<teacher>
<name>教师名称</name>
<age>40</age>
<school>学校名称</school>
</teacher>
</people>
具体步骤:
1. 将xml装换为xsd文件 (a) 下载 Altova XMLSpy 工具(破解版最好,不行就到官网下载http://www.altova.com/xml-editor/试用30天) (b) 在 Altova XMLSpy 中打开 xml文件 ,选择DTD/Schema --> Generate DTD/Schema... ok 就行。。
生成文件如下:
代码
<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XMLSpy v2011 sp1 (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="teacher">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="age"/>
<xs:element ref="school"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="age"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="school">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="学校名称"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="people">
<xs:complexType>
<xs:sequence>
<xs:element ref="student"/>
<xs:element ref="teacher"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="学生姓名"/>
<xs:enumeration value="教师名称"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:enumeration value="23"/>
<xs:enumeration value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
2.2. 将xsd 文件生成Java代码该步骤需要jaxb文件
(a) 打开下载的jaxb文件,在bin目录下执行xjc命令
xjc -p "org.xml.generated" c:\People.xsd
"org.xml.generated" --> 为生成Java代码指定包名
c:\People.xsd --> xsd文件路径
正确后可以在bin目录下看到生成的代码
(b)将生成的代码放到程序中
代码
package org.xml;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.UnmarshalException;
import javax.xml.bind.Unmarshaller;
import org.xml.generated.People;
import org.xml.generated.Student;
import org.xml.generated.Teacher;
/**
* 解析xml
* @author Administrator
*
*/
public class ParseXml {
public static void main(String[] args) {
try {
JAXBContext context = JAXBContext.newInstance("org.xml.generated"); //包名
Unmarshaller unmarshaller = context.createUnmarshaller();
Object object = unmarshaller.unmarshal(new File("C:\\people.xml")); // xml 路径
People people = (People)object;
Student student = people.getStudent();
System.out.println("student.name=" + student.getName());
System.out.println("student.age=" + student.getAge());
Teacher teacher = people.getTeacher();
System.out.println("teacher.name=" + teacher.getName());
System.out.println("teacher.age=" + teacher.getAge());
System.out.println("teacher.school=" + teacher.getSchool());
} catch (UnmarshalException ex){
ex.printStackTrace();
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
生成的代码和xsd文件可以看看有些地方可能需要修改,另外jaxb下载文件中也有相关的实例。

浙公网安备 33010602011771号