JAXB解析xml
发布时间:2020-12-16 05:59:53 所属栏目:百科 来源:网络整理
导读:大家知道xml常用的解析方式有DOM,SAX,StAX三种.如果使用这几种中的一种解析,显然还是比较麻烦的. 可以使用JAXB(JavaArchitecture for XMLBinding) Person public class Person implements Serializable { private String name; private Integer age; private
大家知道xml常用的解析方式有DOM,SAX,StAX三种.如果使用这几种中的一种解析,显然还是比较麻烦的.
可以使用JAXB(JavaArchitectureforXMLBinding)
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(); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- actionscript-3 – SoundTransform平移不使用Act
- ruby-on-rails – Rails中的普通旧Ruby对象位置
- .net – Oracle.Dataaccess错误ORA-06502:PL /
- Sqoop从Oracle导入到Hive(小坑)
- ruby-on-rails – Ruby Rails:检索表单输入字段
- oracle 12c vs oracle 11204 优化器特性(optimi
- 深入解析C#设计模式中对桥接模式的具体运用
- swift3.0之UIImagePickerController的使用和注意
- SQLite和并发性
- postgresql实现模糊查询 [转]
热点阅读