- 浏览: 18147 次
- 性别:
- 来自: 上海
最新评论
最近项目中用到了xml和java bean的转换
用到xml的时候我们需要遍历解析。。。然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好
我们能不能直接从xml转化到java bean呢,或者直接成java bean转化到xml呢?
答案是OK的
使用jar包:org.heibo.xbean
写个小例子
XML
Books类
Book类
测试类:
运行上面这个类就可以生成开头所看见的那个XML的内容
解析xml
数据就完全autowire by name进入到了bean,某些情况下很好用(xml很整齐,每个节点的内容都一样,固定)
用到xml的时候我们需要遍历解析。。。然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好
我们能不能直接从xml转化到java bean呢,或者直接成java bean转化到xml呢?
答案是OK的
使用jar包:org.heibo.xbean
写个小例子
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>
- <?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>
<?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);
- }
- }
- 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);
- }
- }
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.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.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();
- }
- }
- }
- 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();
- }
- }
- }
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];
- 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];
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(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件以及对象序列化等领域。...对于处理大量XML数据或者频繁进行XML到Java Bean转换的项目,这样的工具是不可或缺的。
2. **转换为XML**:使用JAXB的Marshaller将Bean转换为XML字符串或写入文件。 ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import java.io.File; public class WebController { ...
xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...
测试通常会创建一个包含相同节点名的XML文件,然后将其转换为Java Bean,再将该Bean转换回XML,最后比较原始XML和新生成的XML是否一致。 总之,Betwixt提供了一种方便的方式来处理Java对象与XML之间的转换,即使在...
- 使用`toXML()`方法将Java Bean转换为XML字符串。 - 使用`fromXML()`方法将XML字符串转换为Java Bean。 3. **示例**: ```java import com.thoughtworks.xstream.XStream; public class XStreamDemo { ...
在Java开发中,有时我们需要将Java Bean对象转换成XML字符串,以便于数据交换或存储。XStream库就是这样一个工具,它提供了一种简单且高效的方式来实现这个目标。XStream不仅能够将Java对象转换为XML,还可以反向将...
总结来说,这个压缩包提供的内容涉及了Java中使用JAXB进行XML与Java对象之间转换的实际应用,以及辅助的DTO和文件读取工具。这些对于理解和实现XML数据处理的Java应用非常有帮助。开发者可以通过学习和使用这些示例...
而JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许我们轻松地在Java对象(javabean)和XML文档之间进行转换。通过JAXB,开发者可以避免手动编写XML解析和序列化代码,极大地提高了开发...
总之,"Converter between XML and Java Bean"涉及的关键知识点是利用如XStream这样的库实现XML与Java对象之间的转换,这在Java开发中是非常重要且实用的技能,尤其在处理数据交换、持久化存储和跨系统通信时。...
它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream <version>1.4.20 实体类和测试类详见博客 ...
- **使用JAXB(Java Architecture for XML Binding)**:JAXB是Java标准API,可以自动将Java对象转换为XML和从XML反序列化为Java对象。只需为JavaBean添加适当的注解,然后使用JAXBContext和Marshaller进行转换。 ...
以下是JAXB在XML到BEAN转换中的工作原理: 1. **注解BEAN类**:首先,我们需要在BEAN类上添加JAXB注解。比如,`@XmlRootElement`注解用于标记BEAN类为XML文档的根元素,`@XmlElement`或`@XmlAttribute`注解用于映射...
通过以上内容,我们可以看到JAXB如何简化了XML和Java Bean之间的转换,使得开发人员能够更加专注于业务逻辑,而不是数据序列化和反序列化的细节。理解并熟练运用JAXB,对于处理XML数据的Java开发者来说,是一项重要...
1. XML到Bean转换: 当我们需要将XML文档解析成Java对象时,Castor提供了便利的方法。首先,你需要创建一个描述XML结构与Java类之间映射关系的Mapping文件。在Mapping文件中,定义了XML元素和属性与Java类的字段...
当一个Java对象被转换为XML时,JAXB会根据对象的属性和注解生成相应的XML元素和属性。例如,一个名为`Person`的类,包含`name`和`age`属性,可以通过以下方式标注: ```java @XmlRootElement(name = "person") ...
1. XML到Bean转换: 这个过程通常称为XML的反序列化。Java提供了多种库来实现这个功能,如JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)。JAXB是Java SE的标准部分,可以自动将XML文档...
在Java开发中,XML(可扩展标记语言)和Bean之间的相互转换是常见的操作,尤其是在处理配置文件、数据持久化或Web服务时。这里的"bean"通常指的是JavaBeans,即符合特定设计模式的Java对象,它们封装了数据并提供了...
5. **生成序列化和反序列化代码**:为了方便XML数据和Java对象之间的转换,工具还会生成解析XML和生成XML的代码,通常是基于JAXB(Java Architecture for XML Binding)或其他类似库。 除了XSD转Java,有些工具还...
JAXB允许我们将Java类绑定到XML Schema,从而能够方便地在Java对象和XML文档之间进行转换。要使用JAXB,你需要定义一个Java类,该类的字段对应于XML元素,然后使用JAXB提供的API将该对象转换为XML。 以下是一个简单...
作为备忘录,实现xml转换成xsd,然后由xsd转换到javabean,最后在xml和javabean之间互相转换。 说明网址:http://blog.csdn.net/beanjoy/article/details/38272051