[size=xx-small]
通过jaxb方式把xml文件映射成bean对象。
1、新建java工程或者web工程都可以。
2、通过精简必须导入jar包
activation.jar
jaxb-api-2.0.jar
jaxb-impl-2.0.1.jar
jsr173_api-1.0.jar
3、 新建xml文件
<?xml version="1.0" encoding="UTF-8"?>
<root>
<template
start="true"
ip="127.0.0.1"
port="3344"
server="server"
/>
<template ... ... />
</root>
4、新建bean对象,xml的映射文件。
Vo.java 如下
Java代码 收藏代码
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
})
@XmlRootElement(name = "[color=red]template[/color]")
public class Vo {
@XmlAttribute
private String start;
@XmlAttribute
private String ip;
@XmlAttribute
private String port;
@XmlAttribute
private String server;
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getServer() {
return server;
}
public void setServer(String server) {
this.server = server;
}
}
该文件对应xml文件中 循环节点 template 元素
Root.java 文件如下
Java代码 收藏代码
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
})
@XmlRootElement(name = "[color=blue]root[/color]")
public class Root {
protected List<Vo> [color=red]template[/color];
public List<Vo> getTemplateList() {
if (template == null) {
template = new ArrayList<Vo>();
}
return this.template;
}
}
注意bean对象与xml映射的关系。
5、 解析xml为bean类
Java代码 收藏代码
public static void gernateConfig() throws Exception{
StringBuffer buffer = null;
JAXBContext jaxbContext;
try {
//读入xml文件流
InputStream is = Excecute.class.getResourceAsStream(“/conf/config.xml”);
BufferedReader in = new BufferedReader(new InputStreamReader(is));
buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
//加载映射bean类
jaxbContext = JAXBContext.newInstance(Root.class);
//创建解析
Unmarshaller um = jaxbContext.createUnmarshaller();
StreamSource streamSource = new StreamSource(new StringReader(buffer.toString()));
Root root = (Root) um.unmarshal(streamSource);
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e.getMessage());
}
}
6、 把bean对象生成xml字符串方法
Java代码 收藏代码
public static String gernateConfigXml(Root root) throws Exception {
if (root != null) {
try {
JAXBContext context = JAXBContext.newInstance(Root.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
Writer writer = new StringWriter();
m.marshal(root, writer);
try {
String xml = writer.toString();
writer.flush();
writer.close();
return xml;
} catch (IOException e) {
return "";
}
} catch (Exception e) {
throw new Exception("失败!");
}
} else {
return null;
}
}
[/size]
分享到:
相关推荐
**标题:“JAXB解析XML为对象例子”** 在Java开发中,XML作为一种常见的数据交换格式,经常被用于存储和传输数据。Java Architecture for XML Binding(JAXB)是Java平台的标准API,它允许开发者将Java对象绑定到...
JAXB 解析 XML JAXB (Java Architecture for XML Binding) 是一种基于 Java 的 XML 绑定技术,主要功能是根据 DTD 或者 XML Schema 将 XML Element 转化为 Java 类。JAXB 将 XML 文本流转化为 Java Object,把 XML ...
- 创建XMLInputFactory实例,这是解析XML的起点。 - 使用XMLInputFactory创建XMLStreamReader,这是读取XML事件的对象。 - 通过XMLStreamReader逐个处理事件,如StartElement、EndElement、Characters等。 - 在...
通过JAXB,开发者可以避免手动编写XML解析和序列化代码,极大地提高了开发效率和代码的可维护性。这篇博客将深入探讨如何利用JAXB进行xml和javabean之间的转换。 首先,我们需要了解JAXB的基本工作原理。JAXB通过元...
- **性能优化**:由于是编译时绑定,JAXB转换过程通常比运行时解析XML快。 - **易于维护**:当XML Schema更改时,只需要重新生成Java类,无需修改大量代码。 然而,JAXB也有一些局限性,例如不支持某些复杂的XML...
本篇我们将深入探讨SAX(Simple API for XML)解析XML的实例。 SAX,全称为Simple API for XML,是一种基于事件驱动的解析方式。与DOM(Document Object Model)解析器不同,SAX并不将整个XML文档加载到内存中形成...
2. **实例化(Unmarshalling)**:当需要将XML数据转换为Java对象时,JAXB使用Unmarshaller接口解析XML文档,生成对应的Java对象。这个过程是将XML数据"反序列化"为可操作的Java对象。 3. **序列化(Marshalling)*...
5. **Unmarshalling**: 使用`Unmarshaller`对象将XML字符串或文件解析回Java Bean实例。 6. **绑定文件(bindings file)**: 如果默认的注解不满足需求,可以创建一个绑定文件来更精细地控制XML到Java的映射。 **...
4. **解析XML到Java对象**:使用Unmarshaller对象的`unmarshal`方法,我们可以将XML文件解析为Java对象。 ```java Person person = (Person) unmarshaller.unmarshal(file); ``` 5. **处理解析后的数据**:现在,...
然后,JAXB会使用这些类来解析XML并生成相应的对象实例。对于简单的XML,这通常很有效。但是,对于复杂的XML结构,转换为Map可能更为合适。 转换XML到Map的过程通常包括以下步骤: 1. 创建一个XML解析器:使用`...
在描述的实例中,可能是通过HTTP请求获取豆瓣电影的XML数据,然后使用上述解析器之一来解析XML,获取电影信息。 三、豆瓣电影API 豆瓣电影API提供了一种方式来获取电影相关的数据,如电影介绍、评分、评论等。通常...
该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...
3. 解析XML:有了Java类,我们就可以使用JAXB提供的`Unmarshaller`接口将XML文档解析成Java对象。以下是一个简单的示例: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Unmarshaller ...
3. **解析XML到BEAN**:最后,使用Unmarshaller的`unmarshal`方法将XML文档解析为BEAN对象。 ```java Person person = (Person) unmarshaller.unmarshal(new File("person.xml")); ``` 相反,从BEAN到XML的转换...
该过程中,JAXB 也提供了将 XML 实例文档反向生成 Java 对象树的方法,并能将 Java 对象树的内容重新写到 XML 实例文档。JAXB 中包含“xjc”工具和一个“schemagen”工具。“xjc”工具可以用来将 XML 模式或其他类型...
本实例主要讲解如何在JSP中利用DOM解析XML文件,包括XML文件的读取、数据匹配以及数据写入。 首先,我们需要创建一个简单的User实体类,如`User`,包含姓名(name)、密码(pwd)和电子邮件(email)属性及相应的...
总结来说,Java提供了多种解析XML的方法,包括DOM、SAX和JAXB等。对于处理多级嵌套的XML,DOM和JAXB在操作上更为便捷,而SAX则适用于处理大规模文件。在具体选择时,应根据项目需求和资源限制进行权衡。
描述中的“jaxb资料及实例,里面还包含了其他资料地址2”进一步确认了压缩包内容不仅限于JAXB,可能还包含了与之相关的其他开发资料或教程链接,可能是关于XML处理、Web服务、数据交换等方面的知识。 在“testJaxb...
Android支持JAXB(Java Architecture for XML Binding) ...使用JAXB在Android平台上解析XML文件需要注意一些特殊的问题和解决方法,通过正确的配置和编码,我们可以成功地使用JAXB来解析XML文件。