怎样转换XML和Java Bean
2010-04-12 16:30
183 查看
XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦。下面介绍如何进行XML和Java Bean的互相转换。
最近项目中用到了xml和java bean的转换
用到xml的时候我们需要遍历解析。长沙java培训然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好
我们能不能直接从xml转化到java bean呢,或者直接成java bean转化到xml呢?
答案是OK的
使用jar包:org.nuxeo.common.xmap
写个小例子
XML
< ?xml version="1.0" encoding="UTF-8"?> < books> < book no="1"> < title>java是傻逼< /title> < subject>java< /subject> < subject>xml< /subject> < price>10< /price> < /book> < book no="2"> < title>c++程序设计< /title> < subject>C++< /subject> < subject>c< /subject> < price>10< /price> < /book> < /books> Books类
import java.util.ArrayList; import java.util.List; import org.nuxeo.common.xmap.annotation.XNodeList; import org.nuxeo.common.xmap.annotation.XObject; @XObject(value = "books") public class Books { @XNodeList(value = "book", type = ArrayList.class, componentType = Book.class) private List< Book> book; public List< Book> getBook() { return book; } public void setBook(List< Book> book) { this.book = book; } public void addBook(Book b){ if(book==null){ book=new ArrayList< Book>(); } book.add(b); } } Book类
import java.util.ArrayList; import java.util.List; import org.nuxeo.common.xmap.annotation.XNode; import org.nuxeo.common.xmap.annotation.XNodeList; import org.nuxeo.common.xmap.annotation.XObject; @XObject public class Book { @XNode("title") private String title; @XNode("@no") private String no; @XNodeList(value = "subject", type = ArrayList.class, componentType = String.class) private List< String> subjects; @XNode("price") private int price; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public List< String> getSubjects() { return subjects; } public void setSubjects(List< String> subjects) { this.subjects = subjects; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getNo() { return no; } public void setNo(String no) { this.no = no; } } 测试类:
import java.util.ArrayList; import java.util.List; import org.nuxeo.common.xmap.XMap; public class XmapTest { public static void main(String[] args) { try { //声明一组书的根节点 Books books=new Books(); //声明一本书 Book book=new Book(); //书的类型 List< String> sj=new ArrayList< String>(); sj.add("java"); sj.add("xml"); //设置书节点的属性 book.setPrice(10); book.setTitle("java是傻逼"); book.setSubjects(sj); book.setNo("1"); //将书节点添加到跟节点 books.addBook(book); //声明一本书 Book book2=new Book(); //书的类型 List< String> sj2=new ArrayList< String>(); sj2.add("C++"); sj2.add("c"); //设置书节点的属性 book2.setPrice(10); book2.setTitle("c++程序设计"); book2.setSubjects(sj2); book2.setNo("2"); //将书节点添加到跟节点 books.addBook(book2); XMap xmp = new XMap(); xmp.register(Books.class); List< String> filters = new ArrayList< String>(); System.out.println(xmp.asXmlString(books, "UTF-8", filters, true)); } catch (Exception e) { e.printStackTrace(); } } } 运行上面这个类就可以生成开头所看见的那个XML的内容
解析xml
xmap.register(Books.class); URL url = new File("book.xml").toURL(); InputStream in = new FileInputStream(new File("book.xml")); Object[] result = (Object[]) xmap.loadAll(in); Books books=(Books)result[0]; 数据就完全autowire by name进入到了bean,某些情况下很好用(xml很整齐,每个节点的内容都一样,固定)
XML和Java Bean互相转换就此实现。
长沙java培训
最近项目中用到了xml和java bean的转换
用到xml的时候我们需要遍历解析。长沙java培训然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好
我们能不能直接从xml转化到java bean呢,或者直接成java bean转化到xml呢?
答案是OK的
使用jar包:org.nuxeo.common.xmap
写个小例子
XML
< ?xml version="1.0" encoding="UTF-8"?> < books> < book no="1"> < title>java是傻逼< /title> < subject>java< /subject> < subject>xml< /subject> < price>10< /price> < /book> < book no="2"> < title>c++程序设计< /title> < subject>C++< /subject> < subject>c< /subject> < price>10< /price> < /book> < /books> Books类
import java.util.ArrayList; import java.util.List; import org.nuxeo.common.xmap.annotation.XNodeList; import org.nuxeo.common.xmap.annotation.XObject; @XObject(value = "books") public class Books { @XNodeList(value = "book", type = ArrayList.class, componentType = Book.class) private List< Book> book; public List< Book> getBook() { return book; } public void setBook(List< Book> book) { this.book = book; } public void addBook(Book b){ if(book==null){ book=new ArrayList< Book>(); } book.add(b); } } Book类
import java.util.ArrayList; import java.util.List; import org.nuxeo.common.xmap.annotation.XNode; import org.nuxeo.common.xmap.annotation.XNodeList; import org.nuxeo.common.xmap.annotation.XObject; @XObject public class Book { @XNode("title") private String title; @XNode("@no") private String no; @XNodeList(value = "subject", type = ArrayList.class, componentType = String.class) private List< String> subjects; @XNode("price") private int price; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public List< String> getSubjects() { return subjects; } public void setSubjects(List< String> subjects) { this.subjects = subjects; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getNo() { return no; } public void setNo(String no) { this.no = no; } } 测试类:
import java.util.ArrayList; import java.util.List; import org.nuxeo.common.xmap.XMap; public class XmapTest { public static void main(String[] args) { try { //声明一组书的根节点 Books books=new Books(); //声明一本书 Book book=new Book(); //书的类型 List< String> sj=new ArrayList< String>(); sj.add("java"); sj.add("xml"); //设置书节点的属性 book.setPrice(10); book.setTitle("java是傻逼"); book.setSubjects(sj); book.setNo("1"); //将书节点添加到跟节点 books.addBook(book); //声明一本书 Book book2=new Book(); //书的类型 List< String> sj2=new ArrayList< String>(); sj2.add("C++"); sj2.add("c"); //设置书节点的属性 book2.setPrice(10); book2.setTitle("c++程序设计"); book2.setSubjects(sj2); book2.setNo("2"); //将书节点添加到跟节点 books.addBook(book2); XMap xmp = new XMap(); xmp.register(Books.class); List< String> filters = new ArrayList< String>(); System.out.println(xmp.asXmlString(books, "UTF-8", filters, true)); } catch (Exception e) { e.printStackTrace(); } } } 运行上面这个类就可以生成开头所看见的那个XML的内容
解析xml
xmap.register(Books.class); URL url = new File("book.xml").toURL(); InputStream in = new FileInputStream(new File("book.xml")); Object[] result = (Object[]) xmap.loadAll(in); Books books=(Books)result[0]; 数据就完全autowire by name进入到了bean,某些情况下很好用(xml很整齐,每个节点的内容都一样,固定)
XML和Java Bean互相转换就此实现。
长沙java培训
相关文章推荐
- 使用XmlPullParser把xml文件转换成java bean对象
- xml和java Bean的直接转换,Xmap
- JAB2完成Java bean到xml的相互转换
- JAXB实现JAVA BEAN与XML之间的转换
- 怎样用Google APIs和Google的应用系统进行集成(8)----怎样把Google Blogger(博客)的JSON Schema转换成XML的Schema(XSD)?
- JAXB2完成java bean到xml的相互转换
- 怎样用Google APIs和Google的应用系统进行集成(5)----怎样把Google Tasks的JSON Schema转换成XML的Schema(XSD)?
- java bean和xml相互转换
- JAXB2完成java bean到xml的相互转换
- java bean和xml相互转换
- xml和java Bean的直接转换,Xmap
- xml和java Bean的直接转换,Xmap
- 利用Xstream注解实现xml和java bean之间的转换
- java和xml相互转换,java bean转xml文件
- java bean与xml相互转换
- XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法
- 怎样安装和卸载 Oracle XML database (XMLDB/XDB)?
- 怎样使Spring的applicationContext.xml文件不放入数据库用户名和密码
- php curl xml传输和转换
- 怎样把ppt转换成pdf文件