`

xml和java bean的转换

阅读更多

最近项目中用到了xml和java bean的转换
用到xml的时候我们需要遍历解析。。。然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好
我们能不能直接从xml转化到java bean呢,或者直接成java bean转化到xml呢?
答案是OK的
使用jar包:org.heibo.xbean

写个小例子
XML
Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <books>  
  3. <book no="1">  
  4. <title>java是傻逼</title>  
  5. <subject>java</subject>  
  6. <subject>xml</subject>  
  7. <price>10</price>  
  8. </book>  
  9. <book no="2">  
  10. <title>c++程序设计</title>  
  11. <subject>C++</subject>  
  12. <subject>c</subject>  
  13. <price>10</price>  
  14. </book>  
  15. </books>  
Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <books>  
  3. <book no="1">  
  4. <title>java是傻逼</title>  
  5. <subject>java</subject>  
  6. <subject>xml</subject>  
  7. <price>10</price>  
  8. </book>  
  9. <book no="2">  
  10. <title>c++程序设计</title>  
  11. <subject>C++</subject>  
  12. <subject>c</subject>  
  13. <price>10</price>  
  14. </book>  
  15. </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类
Java代码 复制代码
  1. import java.util.ArrayList;   
  2. import java.util.List;   
  3.   
  4. import org.nuxeo.common.xmap.annotation.XNodeList;   
  5. import org.nuxeo.common.xmap.annotation.XObject;   
  6.   
  7. @XObject(value = "books")   
  8. public class Books {       
  9.     @XNodeList(value = "book", type = ArrayList.class, componentType = Book.class)   
  10.     private List<Book> book;   
  11.        
  12.     public List<Book> getBook() {   
  13.         return book;   
  14.     }   
  15.   
  16.     public void setBook(List<Book> book) {   
  17.         this.book = book;   
  18.     }   
  19.        
  20.     public void addBook(Book b){   
  21.         if(book==null){   
  22.             book=new ArrayList<Book>();   
  23.         }   
  24.         book.add(b);   
  25.     }   
  26. }  
Java代码 复制代码 收藏代码
  1. import java.util.ArrayList;   
  2. import java.util.List;   
  3.   
  4. import org.nuxeo.common.xmap.annotation.XNodeList;   
  5. import org.nuxeo.common.xmap.annotation.XObject;   
  6.   
  7. @XObject(value = "books")   
  8. public class Books {       
  9.     @XNodeList(value = "book", type = ArrayList.class, componentType = Book.class)   
  10.     private List<Book> book;   
  11.        
  12.     public List<Book> getBook() {   
  13.         return book;   
  14.     }   
  15.   
  16.     public void setBook(List<Book> book) {   
  17.         this.book = book;   
  18.     }   
  19.        
  20.     public void addBook(Book b){   
  21.         if(book==null){   
  22.             book=new ArrayList<Book>();   
  23.         }   
  24.         book.add(b);   
  25.     }   
  26. }  
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类
Java代码 复制代码
  1. import java.util.ArrayList;   
  2. import java.util.List;   
  3.   
  4. import org.nuxeo.common.xmap.annotation.XNode;   
  5. import org.nuxeo.common.xmap.annotation.XNodeList;   
  6. import org.nuxeo.common.xmap.annotation.XObject;   
  7.   
  8.   
  9. @XObject  
  10. public class Book {   
  11.     @XNode("title")   
  12.     private String   title;   
  13.   
  14.     @XNode("@no")   
  15.     private String no;   
  16.        
  17.     @XNodeList(value = "subject", type = ArrayList.class, componentType = String.class)   
  18.     private List<String> subjects;   
  19.        
  20.     @XNode("price")   
  21.     private int   price;   
  22.   
  23.     public String getTitle() {   
  24.         return title;   
  25.     }   
  26.   
  27.     public void setTitle(String title) {   
  28.         this.title = title;   
  29.     }   
  30.   
  31.     public List<String> getSubjects() {   
  32.         return subjects;   
  33.     }   
  34.   
  35.     public void setSubjects(List<String> subjects) {   
  36.         this.subjects = subjects;   
  37.     }   
  38.   
  39.     public int getPrice() {   
  40.         return price;   
  41.     }   
  42.   
  43.     public void setPrice(int price) {   
  44.         this.price = price;   
  45.     }   
  46.   
  47.     public String getNo() {   
  48.         return no;   
  49.     }   
  50.   
  51.     public void setNo(String no) {   
  52.         this.no = no;   
  53.     }   
  54. }  
Java代码 复制代码 收藏代码
  1. import java.util.ArrayList;   
  2. import java.util.List;   
  3.   
  4. import org.nuxeo.common.xmap.annotation.XNode;   
  5. import org.nuxeo.common.xmap.annotation.XNodeList;   
  6. import org.nuxeo.common.xmap.annotation.XObject;   
  7.   
  8.   
  9. @XObject  
  10. public class Book {   
  11.     @XNode("title")   
  12.     private String   title;   
  13.   
  14.     @XNode("@no")   
  15.     private String no;   
  16.        
  17.     @XNodeList(value = "subject", type = ArrayList.class, componentType = String.class)   
  18.     private List<String> subjects;   
  19.        
  20.     @XNode("price")   
  21.     private int   price;   
  22.   
  23.     public String getTitle() {   
  24.         return title;   
  25.     }   
  26.   
  27.     public void setTitle(String title) {   
  28.         this.title = title;   
  29.     }   
  30.   
  31.     public List<String> getSubjects() {   
  32.         return subjects;   
  33.     }   
  34.   
  35.     public void setSubjects(List<String> subjects) {   
  36.         this.subjects = subjects;   
  37.     }   
  38.   
  39.     public int getPrice() {   
  40.         return price;   
  41.     }   
  42.   
  43.     public void setPrice(int price) {   
  44.         this.price = price;   
  45.     }   
  46.   
  47.     public String getNo() {   
  48.         return no;   
  49.     }   
  50.   
  51.     public void setNo(String no) {   
  52.         this.no = no;   
  53.     }   
  54. }  
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;
    }
}


测试类:
Java代码 复制代码
  1. import java.util.ArrayList;   
  2. import java.util.List;   
  3.   
  4. import org.nuxeo.common.xmap.XMap;   
  5.   
  6.   
  7. public class XmapTest {   
  8.     public static void main(String[] args) {   
  9.         try {   
  10.             //声明一组书的根节点   
  11.             Books books=new Books();   
  12.                
  13.             //声明一本书   
  14.             Book book=new Book();   
  15.             //书的类型   
  16.             List<String> sj=new ArrayList<String>();   
  17.             sj.add("java");   
  18.             sj.add("xml");   
  19.             //设置书节点的属性   
  20.             book.setPrice(10);   
  21.             book.setTitle("java是傻逼");   
  22.             book.setSubjects(sj);   
  23.             book.setNo("1");   
  24.                
  25.             //将书节点添加到跟节点   
  26.             books.addBook(book);   
  27.                
  28.           //声明一本书   
  29.             Book book2=new Book();   
  30.             //书的类型   
  31.             List<String> sj2=new ArrayList<String>();   
  32.             sj2.add("C++");   
  33.             sj2.add("c");   
  34.             //设置书节点的属性   
  35.             book2.setPrice(10);   
  36.             book2.setTitle("c++程序设计");   
  37.             book2.setSubjects(sj2);   
  38.             book2.setNo("2");   
  39.                
  40.             //将书节点添加到跟节点   
  41.             books.addBook(book2);   
  42.                
  43.             XMap xmp = new XMap();   
  44.             xmp.register(Books.class);   
  45.   
  46.             List<String> filters = new ArrayList<String>();   
  47.   
  48.             System.out.println(xmp.asXmlString(books, "UTF-8", filters, true));   
  49.         } catch (Exception e) {   
  50.             e.printStackTrace();   
  51.         }   
  52.     }   
  53. }  
Java代码 复制代码 收藏代码
  1. import java.util.ArrayList;   
  2. import java.util.List;   
  3.   
  4. import org.nuxeo.common.xmap.XMap;   
  5.   
  6.   
  7. public class XmapTest {   
  8.     public static void main(String[] args) {   
  9.         try {   
  10.             //声明一组书的根节点   
  11.             Books books=new Books();   
  12.                
  13.             //声明一本书   
  14.             Book book=new Book();   
  15.             //书的类型   
  16.             List<String> sj=new ArrayList<String>();   
  17.             sj.add("java");   
  18.             sj.add("xml");   
  19.             //设置书节点的属性   
  20.             book.setPrice(10);   
  21.             book.setTitle("java是傻逼");   
  22.             book.setSubjects(sj);   
  23.             book.setNo("1");   
  24.                
  25.             //将书节点添加到跟节点   
  26.             books.addBook(book);   
  27.                
  28.           //声明一本书   
  29.             Book book2=new Book();   
  30.             //书的类型   
  31.             List<String> sj2=new ArrayList<String>();   
  32.             sj2.add("C++");   
  33.             sj2.add("c");   
  34.             //设置书节点的属性   
  35.             book2.setPrice(10);   
  36.             book2.setTitle("c++程序设计");   
  37.             book2.setSubjects(sj2);   
  38.             book2.setNo("2");   
  39.                
  40.             //将书节点添加到跟节点   
  41.             books.addBook(book2);   
  42.                
  43.             XMap xmp = new XMap();   
  44.             xmp.register(Books.class);   
  45.   
  46.             List<String> filters = new ArrayList<String>();   
  47.   
  48.             System.out.println(xmp.asXmlString(books, "UTF-8", filters, true));   
  49.         } catch (Exception e) {   
  50.             e.printStackTrace();   
  51.         }   
  52.     }   
  53. }  
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
Java代码 复制代码
  1. xmap.register(Books.class);   
  2.             URL url = new File("book.xml").toURL();   
  3.             InputStream in = new FileInputStream(new File("book.xml"));   
  4.             Object[] result = (Object[]) xmap.loadAll(in);   
  5.   
  6. Books books=(Books)result[0];  
Java代码 复制代码 收藏代码
  1. xmap.register(Books.class);   
  2.             URL url = new File("book.xml").toURL();   
  3.             InputStream in = new FileInputStream(new File("book.xml"));   
  4.             Object[] result = (Object[]) xmap.loadAll(in);   
  5.   
  6. 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 转Java bean工具

    XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件以及对象序列化等领域。...对于处理大量XML数据或者频繁进行XML到Java Bean转换的项目,这样的工具是不可或缺的。

    xml和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和java bean互相转换工具包(简单易用)

    xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...

    使用Betwixt将XML转为JAVA Bean(内有JAR包)

    测试通常会创建一个包含相同节点名的XML文件,然后将其转换为Java Bean,再将该Bean转换回XML,最后比较原始XML和新生成的XML是否一致。 总之,Betwixt提供了一种方便的方式来处理Java对象与XML之间的转换,即使在...

    JavaXml及Bean互转

    - 使用`toXML()`方法将Java Bean转换为XML字符串。 - 使用`fromXML()`方法将XML字符串转换为Java Bean。 3. **示例**: ```java import com.thoughtworks.xstream.XStream; public class XStreamDemo { ...

    将对象(java bean)转换为xml字符串

    在Java开发中,有时我们需要将Java Bean对象转换成XML字符串,以便于数据交换或存储。XStream库就是这样一个工具,它提供了一种简单且高效的方式来实现这个目标。XStream不仅能够将Java对象转换为XML,还可以反向将...

    java 使用 JAXB 将xml转换为 bean 包含xml和dto和读取文件的util类

    总结来说,这个压缩包提供的内容涉及了Java中使用JAXB进行XML与Java对象之间转换的实际应用,以及辅助的DTO和文件读取工具。这些对于理解和实现XML数据处理的Java应用非常有帮助。开发者可以通过学习和使用这些示例...

    利用JAXB进行xml和javabean之间转换

    而JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许我们轻松地在Java对象(javabean)和XML文档之间进行转换。通过JAXB,开发者可以避免手动编写XML解析和序列化代码,极大地提高了开发...

    Converter between XML and Java Bean

    总之,"Converter between XML and Java Bean"涉及的关键知识点是利用如XStream这样的库实现XML与Java对象之间的转换,这在Java开发中是非常重要且实用的技能,尤其在处理数据交换、持久化存储和跨系统通信时。...

    xstream实现xml和java bean 互相转换

    它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 &lt;groupId&gt;com.thoughtworks.xstream&lt;/groupId&gt; &lt;artifactId&gt;xstream &lt;version&gt;1.4.20 实体类和测试类详见博客 ...

    javabean和xml互相转换工具类以及jar包

    - **使用JAXB(Java Architecture for XML Binding)**:JAXB是Java标准API,可以自动将Java对象转换为XML和从XML反序列化为Java对象。只需为JavaBean添加适当的注解,然后使用JAXBContext和Marshaller进行转换。 ...

    jaxb XMl和BEAN互转实例(内含jar包)

    以下是JAXB在XML到BEAN转换中的工作原理: 1. **注解BEAN类**:首先,我们需要在BEAN类上添加JAXB注解。比如,`@XmlRootElement`注解用于标记BEAN类为XML文档的根元素,`@XmlElement`或`@XmlAttribute`注解用于映射...

    利用jaxb实现xml和bean互转

    通过以上内容,我们可以看到JAXB如何简化了XML和Java Bean之间的转换,使得开发人员能够更加专注于业务逻辑,而不是数据序列化和反序列化的细节。理解并熟练运用JAXB,对于处理XML数据的Java开发者来说,是一项重要...

    castor样例xml to bean和bean to xml样例

    1. XML到Bean转换: 当我们需要将XML文档解析成Java对象时,Castor提供了便利的方法。首先,你需要创建一个描述XML结构与Java类之间映射关系的Mapping文件。在Mapping文件中,定义了XML元素和属性与Java类的字段...

    使用jaxb将XML转化为JAVA BEAN

    当一个Java对象被转换为XML时,JAXB会根据对象的属性和注解生成相应的XML元素和属性。例如,一个名为`Person`的类,包含`name`和`age`属性,可以通过以下方式标注: ```java @XmlRootElement(name = "person") ...

    xml to bean or bean to xml

    1. XML到Bean转换: 这个过程通常称为XML的反序列化。Java提供了多种库来实现这个功能,如JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)。JAXB是Java SE的标准部分,可以自动将XML文档...

    xml和bean之间的相互转换源码

    在Java开发中,XML(可扩展标记语言)和Bean之间的相互转换是常见的操作,尤其是在处理配置文件、数据持久化或Web服务时。这里的"bean"通常指的是JavaBeans,即符合特定设计模式的Java对象,它们封装了数据并提供了...

    xml文件自动转成java对象工具

    5. **生成序列化和反序列化代码**:为了方便XML数据和Java对象之间的转换,工具还会生成解析XML和生成XML的代码,通常是基于JAXB(Java Architecture for XML Binding)或其他类似库。 除了XSD转Java,有些工具还...

    java对象与xml的互相转换

    JAXB允许我们将Java类绑定到XML Schema,从而能够方便地在Java对象和XML文档之间进行转换。要使用JAXB,你需要定义一个Java类,该类的字段对应于XML元素,然后使用JAXB提供的API将该对象转换为XML。 以下是一个简单...

    xml、xsd、javabean的互相转换

    作为备忘录,实现xml转换成xsd,然后由xsd转换到javabean,最后在xml和javabean之间互相转换。 说明网址:http://blog.csdn.net/beanjoy/article/details/38272051

Global site tag (gtag.js) - Google Analytics