- 大家知道xml常用的解析方式有DOM, SAX, StAX三种.如果使用这几种中的一种解析, 显然还是比较麻烦的.
- 可以使用JAXB(Java Architecture for XML Binding)
- Person
- public class Person implements Serializable {
- private String name;
- private Integer age;
- private char sex;
- public Person() {
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- public char getSex() {
- return sex;
- }
- public void setSex(char sex) {
- this.sex = sex;
- }
- }
- @XmlRootElement(name = "persons")
- public class Persons extends ArrayList<Person> { // 泛化, 聚合
- @XmlElement(name = "person")
- public List<Person> getPersons() {
- return this;
- }
- }
- 写xml
- public static void main(String[] args) {
- try {
- // javax.xml.bind.JAXBException: class com.fjh658.pojo.Persons nor
- // any of its super class is known to this context.
- JAXBContext cxt = JAXBContext.newInstance(Persons.class);
- Marshaller marshaller = cxt.createMarshaller();
- Persons persons = new Persons();
- for (int i = 0; i < 50; i++) {
- Person p = new Person();
- p.setName("zhangsan" + i);
- p.setAge(20 + i);
- p.setSex('1');
- persons.add(p);
- }
- marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// 编码格式
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
- marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);// 默认false表示xml指令存在
- // marshaller.marshal(persons, System.out);
- marshaller.marshal(persons, new File("./test.xml"));
- } catch (JAXBException e) {
- e.printStackTrace();
- }
- }
- 读xml
- public class ReadTest {
- public static void main(String[] args) {
- try {
- JAXBContext cxt = JAXBContext.newInstance(Persons.class);
- Unmarshaller unmarshaller = cxt.createUnmarshaller();
- List<Person> persons = (List<Person>) unmarshaller.unmarshal(new File("./test.xml"));
- if (persons != null) {
- for (Person p : persons) {
- if (p != null) {
- System.out.println(p.getName());
- }
- }
- }
- } catch (JAXBException e) {
- e.printStackTrace();
- }
- }
- }
JAXB解析xml
最新推荐文章于 2023-05-18 10:45:48 发布