使用Java提供的JAXB生成和解析XML
来源:互联网 发布:android 打开数据库 编辑:程序博客网 时间:2024/05/16 10:58
1.Student类:
package test;import java.util.List;import javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlElementWrapper;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name="stu")//根节点名public class Student {private int age;private int id;private String name;private List<Book> books;private String[] names;@XmlAttribute//封装成stu的属性,而不是子节点public int getId() {return id;}public void setId(int id) {this.id = id;}@XmlElementpublic String getName() {return name;}public void setName(String name) {this.name = name;}@XmlElement(name="age")//设置name属性改变xml节点名称,不设置默认为变量名public int getAge() {return age;}public void setAge(int age) {this.age = age;}@XmlElementWrapper(name="allBooks")//集合外层的节点名@XmlElement(name="book")public List<Book> getBooks() {return books;}public void setBooks(List<Book> books) {this.books = books;}@XmlElementWrapper(name="allNames")//数组外层的节点名称@XmlElementpublic String[] getNames() {return names;}public void setNames(String[] names) {this.names = names;}}
2.Book类
package test;import javax.xml.bind.annotation.XmlAttribute;public class Book {private int id;private String name;@XmlAttributepublic int getId() {return id;}public void setId(int id) {this.id = id;}@XmlAttributepublic String getName() {return name;}public void setName(String name) {this.name = name;}}
3.使用JAXB根据对象生成XML
package test;import java.io.File;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 Test {public static void main(String[] args) {Student student = new Student();student.setId(1);student.setName("zhang");student.setAge(100);List<Book> books = new ArrayList<Book>();Book book1 = new Book();book1.setId(1);book1.setName("语文");Book book2 = new Book();book2.setId(2);book2.setName("数学");books.add(book1);books.add(book2);student.setBooks(books);student.setNames(new String[]{"张三娃子","狗蛋","三娃子"});try {File file = new File("D:\\student.xml");//创建xml文件JAXBContext context = JAXBContext.newInstance(Student.class);Marshaller mar = context.createMarshaller();mar.setProperty(Marshaller.JAXB_ENCODING, "gbk");//设置编码mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//是否格式化xml文件mar.setProperty(Marshaller.JAXB_FRAGMENT, false);//是否取消xml头部(<?xml version="1.0" encoding="utf-8" standalone="yes"?>)mar.marshal(student, file);//把student写入student文件中mar.marshal(student, System.out); //按xml格式打印student对象} catch (JAXBException e) {e.printStackTrace();}}}
4.把xml文件或者String类型的xml字符串解析为对象
package test;import java.io.ByteArrayInputStream;import java.io.File;import java.io.IOException;import java.io.InputStream;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Unmarshaller;public class Test1 {public static void main(String[] args) {try {File file = new File("D:\\student.xml");//该xml字符串的必须加上头部(<?xml version=\"1.0\" encoding=\"gbk\"?>)才能解析成对象成功String xml = "<?xml version=\"1.0\" encoding=\"gbk\"?>" +" <stu id=\"1\">"+" <age>100</age>"+" <allBooks>"+" <book name=\"语文\" id=\"1\"/>"+" <book name=\"数学\" id=\"2\"/>"+" </allBooks>"+" <name>zhang</name>"+" <allNames>"+" <names>张三娃子</names>"+" <names>狗蛋</names>"+" <names>三娃子</names>"+" </allNames>"+" </stu>";InputStream byteArray = new ByteArrayInputStream(xml.getBytes());//把String字符串转换成流 JAXBContext context = JAXBContext.newInstance(Student.class);Unmarshaller unMar = context.createUnmarshaller();//Student student = (Student)unMar.unmarshal(file);//把xml文件直接转换为对象Student student = (Student)unMar.unmarshal(byteArray);System.out.println(student.getId());System.out.println(student.getAge());System.out.println(student.getName());for (String s : student.getNames()) {System.out.println("小名:"+s);}for (Book book : student.getBooks()) {System.out.println("书籍编号:"+book.getId()+"\t书籍名:"+book.getName());}} catch (JAXBException e) {e.printStackTrace();}}}
- 使用Java提供的JAXB生成和解析XML
- JAXB解析生成xml
- JAXB使用心得1(xml的java解析)
- 使用JAXB实现JAVA解析XML (节点大小写和属性的互相转换实例
- Java JAXB 生成xml
- jaxb xml生成与解析
- 使用JAXB处理JAVA和XML
- 使用JAXB快速解析XML
- 使用Java jaxb处理bean生成xml中一些问题
- 使用Java提供的类生成XML例子
- 使用Java提供的类生成XML例子
- 使用Java提供的类生成XML例子
- Jaxb对XML的解析
- jaxb的实例 java解析xml转成javabean
- XML:使用JAXB完成JavaBean和xml的转化
- Java web ——JAXB 技术—— 提供 javabean 和 xml 映射
- JAXB解析xml 的XML声明
- JAXB解析xml 的XML声明
- 检测 浏览器
- cocos2d-x之内存优化问题
- ——<—原创—》——autohotkey禁用AltTab和Win组合键,就这么简单!!!
- 删除某个文件中特定一行源码
- Oracle 常用函数
- 使用Java提供的JAXB生成和解析XML
- oracle删除添加多列
- 【转载】数据库关系映射
- Erlang之新手初入篇
- jquery的一些问题
- google map v2 在使用中的问题
- hadoop Namenode因硬盘写满无法启动
- Ribbon界面开发:使用更多控件并为控件添加消息处理函数
- SVN:服务端邮件通知hook