我们在将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);
}
}
- 浏览: 112315 次
- 性别:
- 来自: 济南
文章分类
最新评论
发表评论
-
getOutputStream() has already been called for this response解决方案
2017-11-22 17:34 500异常产生原因:web容器生成的servlet代码中有out ... -
java.io.StreamCorruptedException: invalid stream header at java.io.ObjectInp
2017-07-05 16:04 633最近,在部署程序重新启动Tomcat,报 java.io. ... -
java时间格式大全
2009-03-06 10:54 369java.util.*;import java.tex ... -
dwr弹出Error对话框的解决方法
2009-07-23 11:28 352dwr在使用过程中,有个很讨厌的不好的地方,容易弹出一个Er ... -
commons FileUpload 上传图片,服务器文件夹不能自动刷新的解决方案
2009-08-13 17:21 606用到apache的commons-FileUpload上传图 ... -
showmodaldialog弹出的窗口里,不能实现文件的下载解决方案
2015-04-23 17:34 634在showmodaldialog弹出的窗口里,不能实现文件的 ... -
在IE环境下对多行文本输入框textarea进行字数限制
2016-05-09 14:17 437最近在开发一个新项目,业务人员不知道字数有限制,多输入 ... -
tomcat同时存在多个项目webapp.root问题
2016-05-18 15:23 1004最近,想copy一份工程来做另一个项目,用因此当t1 和t2 ... -
dwr在IE8下加载动态下拉菜单时有时候不加载的问题
2016-06-07 10:58 330需求:1、根据不要的发货方式,动态组装不同的物流单位下拉菜单 ... -
VBA访问access数据库实例
2016-08-18 16:39 501最近,同事要用一个excel文件导出每天邮件的信息,邮件基本 ... -
Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记
2016-09-08 14:12 315一直用tomcat一段时间都正常无事,最近一次启动tomca ... -
XP系统不小心按了什么键屏幕变窄两边有黑色的
2016-09-20 11:20 514今天不小心擦键盘时,电脑屏幕变窄了,并且两边都有黑条,显得特 ... -
Win10新建360浏览器快捷菜单
2016-09-22 16:09 380这几天不小心把win10桌面上的360浏览器的快捷方式给删了, ... -
form中的button按钮在IE11中自动提交表单问题导致弹出框关闭之后表单被重置
2016-10-08 15:00 288最近几天,测试系统,遇到一个兼容性问题,form中有一个bu ... -
tomcat启动时报:IOException while loading persisted sessions: java.io.EOFException的解决方案
2016-11-15 09:30 397今天启动tomcat时报: 错误代码如下: 严重: I ... -
tomcat启动报错No UserDatabase component found under key UserDatabase
2016-12-12 10:08 823今天外地工厂在使用tomcat启动项目时,报了一个错误,错误 ... -
Starting Tomcat V8.5 Server at localhost has encountered a problem.
2017-01-18 15:00 3227今天使用eclipse中的tomcate8.5发布工程,一开 ... -
mvn -v报java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli
2017-01-22 17:33 533今天,在使用maven时,命令提示符中输入:mvn -v,如 ... -
CoreException: Could not get the value for parameter compilerId for plugin execution default-compile
2017-01-23 13:42 621CoreException:Couldnotgettheva ... -
google浏览器打开新的标签页显示http://www.google.com.hk/url?sa=p&hl=zh-CN&……
2017-01-25 08:50 1517chrome的版本:51.0.2704.106 m 使 ...
相关推荐
例如,如果你有一个`Person`类,你可以将`List<Person>`转换为XML: ```java public String listToXml(List<Person> list) { JAXBContext context = JAXBContext.newInstance(Person.class); Marshaller ...
本篇文章将深入探讨如何将XML转换为指定类型的List数组,并涉及多层数据结构的处理。 1. **Java XML解析库** 在Java中,有多种库可用于解析XML文件,如DOM(Document Object Model)、SAX(Simple API for XML)和...
这段代码将读取`order.xml`文件并将其内容转换为`Order`对象。`ItemList`属性会被正确地解析为`Item`对象的列表,每个`Item`对象包含其`Name`和`Price`。 在处理嵌套列表时,JAXBContext会自动处理这些关系,无需...
要将这样的XML字符串转换为List,我们需要解析XML并将其转化为相应的Java或C#对象。这个过程通常分为以下几个步骤: 1. **解析XML**:可以使用内置库或第三方库来解析XML字符串。在Java中,可以使用DOM(Document ...
在这个例子中,`unmarshal()`方法将XML文件解析成`Root`对象。然后,我们可以通过对象的getter方法获取到嵌套子节点`nested`中的`text`字符串。 如果我们只想获取特定子节点的字符串,而不关心整个对象模型,可以...
private List<Address> addresses; // getters and setters } public class Address { private String street; // getters and setters } ``` 通过这些注解,`Person`类将被映射为XML结构,其中`addresses`是...
private List<Employee> employees; } public class Employee { @XmlAttribute(name = "id") private String id; @XmlElement(name = "name") private String name; @XmlElement(name = "position") ...
List<MySerializableObject> deserializedObjects = ObjectToXMLUtil.objectXmlDecoder("output.xml"); for (MySerializableObject deserializedObj : deserializedObjects) { System.out.println("Deserialized ...
List<Point> points = new ArrayList<>(); for (Placemark placemark : kml.getDocument().getPlacemarks()) { points.add(placemark.getPoint()); } ``` 最后,为了将这些坐标点转换为JSON格式,我们可以使用像...
private List<Employee> employees; // getters and setters } public class Employee { @XmlAttribute(name = "id") private String id; @XmlElement(name = "name") private String name; @XmlElement...
使用`JAXBContext`实例化一个marshaller对象,然后调用其`marshal()`方法将Java对象转换为XML字符串或文件。 (5) **XML反序列化** 同样,通过`JAXBContext`创建一个unmarshaller对象,调用其`unmarshal()`方法,...
当需要将查询结果导出为XML时,可以先将每条数据转化为对应的Java对象,再利用JAXB将这些对象转换为XML格式。例如,假设我们有一个User类,包含id、name和email字段,可以创建一个UserList类,其中包含一个User类型...
在Java世界中,Java Architecture for XML Binding(JAXB)是一个强大的工具,用于将Java对象转换为XML文档,以及从XML文档反序列化回Java对象。本篇将详细讲解如何使用JAXB结合List实体来实现XML的读写操作。 首先...
private List<Node> nodes; // getters and setters } public class Node { @XmlAttribute(name = "attr") private String attr; @XmlValue private String value; // getters and setters } ``` 然后,...
private List<Child> children; } public class Child { @XmlAttribute(name = "id") private String id; @XmlValue private String content; } ``` 2. **使用JAXBContext进行序列化**: ```java ...
使用JAXB进行XML到对象的反转换:同样,先创建JAXBContext实例,然后使用createUnmarshaller方法生成Unmarshaller对象,最后调用unmarshal方法将XML转换为对象。import javax.xml.bind.JAXBContext;import javax.xml...
4. **XML Transformer**:Java的`javax.xml.transform`包提供了一个Transformer接口,可以将XML源(DOM、SAX事件、XSLT样式表等)转换成XML流。这也可以结合模板使用,但通常适用于更复杂的转换需求。 总的来说,...
private List<User> users; // getters and setters } public class User { @XmlAttribute(name = "id") private int id; @XmlElement(name = "name") private String name; @XmlElement(name = "email") ...
JAXBElement<List<Employee>> listElement = u.unmarshal(file, List.class); return listElement.getValue(); } catch (JAXBException | FileNotFoundException e) { e.printStackTrace(); return null; } }...
private List<Employee> employees; // getters, setters, ... } @XmlRootElement(name = "employee") public class Employee { @XmlElement(name = "name") private String name; // 其他属性... // ...