jaxb.JaxbDemo
package jaxb;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import pojo.People;
public class JaxbDemo {
// 编组数据
public static void marshalData() throws JAXBException, IOException {
JAXBContext context = JAXBContext.newInstance(People.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "gb2312");// 编码格式
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
// 是否省略xml头信息(<?xml version="1.0" encoding="gb2312" standalone="yes"?>)
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);
People people = new People();
people.setLogo("=====");
people.setId(1);
people.setName("son");
People father = new People();
father.setId(2);
father.setName("father");
people.setFather(father);
FileOutputStream os = new FileOutputStream("People.xml");
marshaller.marshal(people, os);
os.close();
}
// 解组数据
public static void unmarshalData() throws JAXBException, FileNotFoundException {
JAXBContext context = JAXBContext.newInstance(People.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
People p = (People) unmarshaller.unmarshal(new FileInputStream("People.xml"));
System.out.println(p.getId() + " : " + p.getName());
}
}
pojo.AbstractPeople
package pojo;
public class AbstractPeople {
private String logo;
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
}
pojo.People
package pojo;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "People")
@XmlAccessorType(XmlAccessType.FIELD)
public class People extends AbstractPeople{
private int id;
private String name;
private People father;
public People() {
}
public People(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public People getFather() {
return father;
}
public void setFather(People father) {
this.father = father;
}
}
People.xml
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<People>
<logo>=====</logo>
<id>1</id>
<name>son</name>
<father>
<id>2</id>
<name>father</name>
</father>
</People>
分享到:
相关推荐
在"JaxbDemo"这个示例项目中,你可能会找到一个包含上述代码的简单应用。这个项目可能包含了`Person`类、序列化和反序列化的代码,以及运行这些代码的主函数。通过运行这个程序,你可以看到XML与Java对象之间的转换...
总结一下,JAXB是一个强大的工具,它使得Java程序与XML数据之间的交互变得简单。通过自定义NamespacePrefixMapper,我们可以更好地控制XML文档中的命名空间前缀,使其符合我们的需求和规范。理解和熟练掌握JAXB,...
在"jaxb+stax+demo"的示例中,通常会展示如何结合JAXB和STAX来高效地解析和生成XML。具体步骤可能包括以下几点: 1. **定义Java类**:首先,我们需要创建一些Java类,这些类将代表XML文档中的元素和属性。JAXB使用...
**JAXB的DEMO** 通常包含更复杂的数据结构和转换场景,可能涉及嵌套对象、集合、自定义转换逻辑等。通过实践这些示例,新手可以逐步掌握JAXB的各种特性和用法。 **源码分析** 对于初学者来说至关重要,因为可以直接...
在给定的例子"JAXBDemo"中,我们可以预期它包含了一个简单的JAXB使用示例,帮助我们理解这一过程。 首先,让我们了解一下JAXB的工作原理。JAXB的核心思想是通过元数据(如注解或XML Schema)将Java类与XML结构关联...
在`jaxb_demo`这个示例压缩包中,可能包含了以下内容: - 一个XML Schema文件(`.xsd`),定义了数据结构。 - 由JAXB自动生成的Java类,这些类对应于XML Schema中的元素和类型。 - 一个或多个Java源代码文件,演示...
JAXB允许我们通过简单的API来实现XML的序列化(将Java对象转换为XML)和反序列化(将XML转换回Java对象)。在这个"jaxb功能用法"的讨论中,我们将深入探讨如何利用JAXB进行XML与Java Bean之间的转换,并结合XSD(XML...
在`JaxbDemo`这个示例中,可能包含了创建JAXB上下文、绑定XML到Java对象、Java对象到XML的转换,以及如何使用这些转换来调用和响应Web服务的方法。具体代码细节可能包括: - 创建JAXBContext实例,它是整个JAXB绑定...
public class JaxbDemo { public static void main(String[] args) throws JAXBException { Person person = new Person(); person.setName("张三"); person.setAge(30); JAXBContext context = JAXBContext....
JAXB使得XML的解析、生成以及数据绑定变得更加简单,避免了手动编写XML解析和生成代码的繁琐工作。 在项目**JAXBDemo**中,我们可以看到一个关于如何使用JAXB进行实际操作的示例。这个项目的核心目标是展示如何通过...
JAXB 的简单应用可以分为两步: 第一步:创建要转化的 Java 对象,该对象需要使用相关注解注释各字段(标注在 get 方法上)。 第二步:编组(Java 对象转 xml),提供多种编组目的地,例如编组到文件或编组到...
在提供的"jaxbDEMO"压缩包中,可能包含了一个已经实现了上述逻辑的Util工具类,允许开发者通过简单的调用API就能完成XML与BEAN之间的转换,而无需关心具体的实现细节。这样的工具对于处理XML数据的项目来说非常方便...
2. SAX(简单API for XML)解析: 与DOM不同,SAX是一种事件驱动的解析器。它逐行读取XML文件,遇到元素、属性等时触发相应的事件回调。这种方式节省了内存,但编程相对复杂,需要编写事件处理器。 3. JDOM: ...
JAXB2提供了基于注解的API,使得XML和Java之间的映射变得简单直观。通过在Java类上使用特定的注解,如`@XmlRootElement`和`@XmlElement`,我们可以指定哪些类和字段应该被映射到XML元素。 2. **生成Java模型** ...
同时,这些DEMO也提供了一个良好的起点,帮助开发者进一步探索Java SE的其他组件和服务,例如数据库连接(JDBC)、XML处理(JAXB和DOM)、反射以及Java的集合框架等。 总的来说,Java JDK DEMO是一个极好的学习资源...
在Java中,处理XML的库主要有DOM解析器(java.xml.dom),SAX解析器(java.xml.sax)以及JAXB(Java Architecture for XML Binding)用于对象和XML之间的绑定。DOM解析器的示例通常会展示如何创建Document对象,查找...
【描述】:“关于Java CXF的一个简单示例,你需要自行下载所需的jar包。” 这个描述意味着你需要具备基本的Java环境,并且要手动下载和管理与CXF相关的依赖库。CXF项目通常依赖于一系列的jar包,包括CXF的核心库、...
例如,可能有"javax.xml.parsers"包,它提供了DOM、SAX和JAXB(Java Architecture for XML Binding)的解析器工厂类。还有"org.w3c.dom"包,包含了DOM接口的实现,如Document、Element和Node等。学习者可以通过这些...
代码实现部分,开发者通常会创建一个简单的客户端来调用我们之前创建的Web服务。这可以通过CXF的`JaxWsProxyFactoryBean`来完成,该工厂可以生成一个服务代理,通过这个代理可以像调用本地方法一样调用远程Web服务。...
Axis2是基于SOAP(简单对象访问协议)的Web服务框架,它构建在AXIOM(抽象XML信息模型)之上,提供了高性能和低内存消耗。Axis2支持多种传输协议,如HTTP、HTTPS,以及消息格式,如SOAP、RESTful。它具有模块化结构...