`

利用JAXBContext将xml文件转换成List<T>

 
阅读更多

我们在将xml文件封装成List<T>形式的文件时,通常使用dom4j或者其他的一些遍历xml的技术,一般都是
doc = DocumentHelper.parseText(xml); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
//System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
Iterator iter = rootElt.elementIterator("CustBean"); // 获取根节点下的子节点head
System.out.println(iter);
List<book> list = new ArrayList<book>();

while (iter.hasNext()) {
Element itemEle = (Element) iter.next();
~~~
Book book = new Book();
book.setName(itemEle.elementTextTrim("name"));
list.add(book);
}

今天从网上学习了另外一种方法,使用JAXBContext将xml文件直接转换成List<T>

1、定义类
@XmlRootElement(name = "Book")
public class Book implements Serializable {
private String bookid;
private String name;

//默认构造方法必须有
public Book() {
super();
}
省略getter、setter方法
}

2、新建List<T>类
@XmlRootElement(name = "Books")
public class ListBook {

private List<Book> list;
public ListBook() {
super();
}

@XmlElements(value={@XmlElement(name="Book", type=Book.class)})
public List<Book> getList() {
return list;
}
public void setList(List<Book> list) {
this.list = list;
}

}
3、建立测试类
package com.util;


import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import com.util.ListBook;

public class Test {
public static void XMLToBean(String strxml) {
try {
JAXBContext context = JAXBContext.newInstance(ListBook.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
ListBook listbooks = (ListBook) unmarshaller.unmarshal(new StringReader(strxml));
for (Book book : listbooks.getList()) {
System.out.println("bookid==="+book.getBookid()+"########bookname==="+book.getName());
}
} catch (JAXBException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String strxml = "<?xml version='1.0' encoding='UTF-8'?><Books><Book><bookid>1</bookid><name>知音</name>" +
"</Book><Book><bookid>2</bookid><name>故事会</name></Book></Books>";
XMLToBean(strxml);
}
}

分享到:
评论

相关推荐

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    例如,如果你有一个`Person`类,你可以将`List&lt;Person&gt;`转换为XML: ```java public String listToXml(List&lt;Person&gt; list) { JAXBContext context = JAXBContext.newInstance(Person.class); Marshaller ...

    java XML转成LIST可以转成指定的类数组

    本篇文章将深入探讨如何将XML转换为指定类型的List数组,并涉及多层数据结构的处理。 1. **Java XML解析库** 在Java中,有多种库可用于解析XML文件,如DOM(Document Object Model)、SAX(Simple API for XML)和...

    JAXBContext 解析xml

    这段代码将读取`order.xml`文件并将其内容转换为`Order`对象。`ItemList`属性会被正确地解析为`Item`对象的列表,每个`Item`对象包含其`Name`和`Price`。 在处理嵌套列表时,JAXBContext会自动处理这些关系,无需...

    xml格式的字符串转换成List

    要将这样的XML字符串转换为List,我们需要解析XML并将其转化为相应的Java或C#对象。这个过程通常分为以下几个步骤: 1. **解析XML**:可以使用内置库或第三方库来解析XML字符串。在Java中,可以使用DOM(Document ...

    JAVA JAXB 解析XML嵌套子节点为字符串

    在这个例子中,`unmarshal()`方法将XML文件解析成`Root`对象。然后,我们可以通过对象的getter方法获取到嵌套子节点`nested`中的`text`字符串。 如果我们只想获取特定子节点的字符串,而不关心整个对象模型,可以...

    JAXB简易教程

    private List&lt;Address&gt; addresses; // getters and setters } public class Address { private String street; // getters and setters } ``` 通过这些注解,`Person`类将被映射为XML结构,其中`addresses`是...

    jaxb解析xml为对象例子

    private List&lt;Employee&gt; employees; } public class Employee { @XmlAttribute(name = "id") private String id; @XmlElement(name = "name") private String name; @XmlElement(name = "position") ...

    JAVA对象序列化保存为XML文件的工具类

    List&lt;MySerializableObject&gt; deserializedObjects = ObjectToXMLUtil.objectXmlDecoder("output.xml"); for (MySerializableObject deserializedObj : deserializedObjects) { System.out.println("Deserialized ...

    kmlUtil.rar

    List&lt;Point&gt; points = new ArrayList&lt;&gt;(); for (Placemark placemark : kml.getDocument().getPlacemarks()) { points.add(placemark.getPoint()); } ``` 最后,为了将这些坐标点转换为JSON格式,我们可以使用像...

    介绍两个 XML 文件操作类

    private List&lt;Employee&gt; employees; // getters and setters } public class Employee { @XmlAttribute(name = "id") private String id; @XmlElement(name = "name") private String name; @XmlElement...

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

    使用`JAXBContext`实例化一个marshaller对象,然后调用其`marshal()`方法将Java对象转换为XML字符串或文件。 (5) **XML反序列化** 同样,通过`JAXBContext`创建一个unmarshaller对象,调用其`unmarshal()`方法,...

    Xml.rar_java xml_xml_xml 数据库_xml数据库

    当需要将查询结果导出为XML时,可以先将每条数据转化为对应的Java对象,再利用JAXB将这些对象转换为XML格式。例如,假设我们有一个User类,包含id、name和email字段,可以创建一个UserList类,其中包含一个User类型...

    jaxb+list+实体,实现对xml读写

    在Java世界中,Java Architecture for XML Binding(JAXB)是一个强大的工具,用于将Java对象转换为XML文档,以及从XML文档反序列化回Java对象。本篇将详细讲解如何使用JAXB结合List实体来实现XML的读写操作。 首先...

    在Java中读取xml文件

    private List&lt;Node&gt; nodes; // getters and setters } public class Node { @XmlAttribute(name = "attr") private String attr; @XmlValue private String value; // getters and setters } ``` 然后,...

    java 生成xml文件

    private List&lt;Child&gt; children; } public class Child { @XmlAttribute(name = "id") private String id; @XmlValue private String content; } ``` 2. **使用JAXBContext进行序列化**: ```java ...

    JAXB开发步骤

    使用JAXB进行XML到对象的反转换:同样,先创建JAXBContext实例,然后使用createUnmarshaller方法生成Unmarshaller对象,最后调用unmarshal方法将XML转换为对象。import javax.xml.bind.JAXBContext;import javax.xml...

    java 通过模板生成 xml

    4. **XML Transformer**:Java的`javax.xml.transform`包提供了一个Transformer接口,可以将XML源(DOM、SAX事件、XSLT样式表等)转换成XML流。这也可以结合模板使用,但通常适用于更复杂的转换需求。 总的来说,...

    XmlParse:xml与数据库的映射

    private List&lt;User&gt; users; // getters and setters } public class User { @XmlAttribute(name = "id") private int id; @XmlElement(name = "name") private String name; @XmlElement(name = "email") ...

    Java_XML生成与解析的四种方法

    JAXBElement&lt;List&lt;Employee&gt;&gt; listElement = u.unmarshal(file, List.class); return listElement.getValue(); } catch (JAXBException | FileNotFoundException e) { e.printStackTrace(); return null; } }...

    Java解析XML的四种方法比较

    private List&lt;Employee&gt; employees; // getters, setters, ... } @XmlRootElement(name = "employee") public class Employee { @XmlElement(name = "name") private String name; // 其他属性... // ...

Global site tag (gtag.js) - Google Analytics