对于这样一个xml
<?xml version="1.0" encoding="UTF-8"?>
<User id="123456" name="zhangsan" age="28">
<Books>
<Book name="11">
<Book name="22"></Book>
<Book name="33"></Book>
</Book>
</Books>
</User>
对于一个element来说,属性用@XmlAttribute(name="name")来匹配,子节点用@XmlElement(name="Book")来匹配,列表属性使用@XmlElementWrapper(name="Books")
@XmlElement(name="Book")来匹配;
User解析类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "User")
public class User {
@XmlAttribute(name="id")
@XmlJavaTypeAdapter(value=String2IntAdapter.class)
private String id;// 普通类型如果不加注解,不被解析
@XmlAttribute(name="name")
private String name;
private String age;
@XmlElementWrapper(name="Books")
@XmlElement(name="Book")
private List<Book> books;// List类型的不需要注解
public List<Book> getBooks() {
return books;
}
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 String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
Book解析类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Book")
public class Book {
private String id;
@XmlAttribute(name="name")
private String name;
@XmlElement(name="Book")
private List<Book> books;
public List<Book> getBooks() {
return books;
}
public void setBooks(List<Book> books) {
this.books = books;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
数据转换适配器类:
public class String2IntAdapter extends XmlAdapter<String, Integer> {
@Override
public Integer unmarshal(String v) throws Exception {
Integer i = null;
if(v != null){
i = Integer.parseInt(v);
}
return i;
}
@Override
public String marshal(Integer v) throws Exception {
if(v != null){
return v.toString();
}
return "";
}
}
调用类:
public class TestJaxb {
public static void main(String [] args){
User user = UserFactory.getInstance("/User.xml");
System.out.println(user);
}
}
如果遇到这种节点:
<exch:exchange-document>
</exch:exchange-document>
带有命名空间的标签,必须在解析时,指定namespace,比如:
<ext:A>
<ext:B></ ext:B>
</ ext:A>
如果一个标签没有被别的标签引用,比如根标签A,那么它必须在XmlRootElement上指定namespace;
如果一个标签被别的标签引用,比如B,那么必须在A的成员变量b的XmlElement上指定namespace;
分享到:
相关推荐
### JAXB使用步骤 1. **创建Java模型类**:定义要序列化的Java类,使用注解如`@XmlRootElement`,`@XmlElement`等来标注字段。 2. **设置JAXB上下文**:使用`JAXBContext`来获取Java类型和XML之间的映射信息。这...
1. **编译时绑定**:在开发阶段,JAXB使用`xjc`工具将XML Schema(XSD)文件转换为一组Java类,这些类包含了对XML结构的表示。这个过程也被称为“逆向工程”。 2. **运行时转换**:在程序运行时,JAXB提供了一组API...
如何更好地jaxb使用如何更好地jaxb使用如何更好地jaxb使用如何更好地jaxb使用
在本示例中,"JAXB使用Socket流进行双向通信源码"结合了这两个概念,创建了一个基于Java的客户端(Client_Socket)应用,实现了XML数据在客户端和服务端之间的双向传输。 首先,我们要理解JAXB的工作原理。JAXB允许...
### JAXB使用场景 - 数据交换:在分布式系统中,服务间通信常通过XML格式的数据交换,JAXB提供了便捷的序列化和反序列化手段。 - 配置文件解析:XML常被用作应用程序的配置文件,JAXB能帮助解析和操作这些配置。 - ...
1. 什么是JAXB? Java Architecture for XML Binding (JAXB) 是一个业界的标准,是一项可以根据XML
2. **实例化(Unmarshalling)**:当需要将XML数据转换为Java对象时,JAXB使用Unmarshaller接口解析XML文档,生成对应的Java对象。这个过程是将XML数据"反序列化"为可操作的Java对象。 3. **序列化(Marshalling)*...
- **软件许可**:明确了 JAXB 使用时的许可条款,通常遵循开放源代码许可证。 - **示例应用**:包含多个示例应用程序,演示如何使用 JAXB 进行 XML 数据绑定。 - **运行时绑定框架**:这部分详细介绍了如何在运行时...
### JAXB使用示例 以下是一个简单的JAXB解析生成XML的例子: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; public class JaxbExample { ...
然后,JAXB使用这些类生成XML Schema(XSD),或者反过来,基于XML Schema生成Java类。这个过程叫做编译或绑定。这种方式使得Java应用程序能够轻松地与XML数据交互,而无需手动解析XML。 **HelloWorld示例** 是学习...
JAXB使用Java注解来指定Java类和XML元素之间的映射关系。例如,我们可以使用`@XmlRootElement`、`@XmlElement`、`@XmlAttribute`等注解来定义Java类的结构。 ```java import javax.xml.bind.annotation....
JAXB使用注解或绑定文件来定义对象和XML之间的映射。例如,当我们有一个`Plan`类,我们可以通过JAXB将其序列化为`plan.xml`文件,反之亦然。 ```java @XmlRootElement(name = "plan") public class Plan { private...
在给定的例子"JAXBDemo"中,我们可以预期它包含了一个简单的JAXB使用示例,帮助我们理解这一过程。 首先,让我们了解一下JAXB的工作原理。JAXB的核心思想是通过元数据(如注解或XML Schema)将Java类与XML结构关联...
**JAXB(Java Architecture for XML ...总结来说,JAXB是一种强大的Java XML处理技术,而XMLSPY作为一个全面的XML工具,是开发和调试XML相关项目的好帮手,尤其在配合JAXB使用时,可以大大提高开发效率和代码质量。
"jaxb使用文档.doc"应该是详细介绍了JAXB的使用方法,包括基本操作、高级特性以及可能遇到的问题和解决方案。文档可能还涵盖了错误处理、性能优化、XML Schema的处理等内容。 总的来说,这份"JAXB资料集.rar"是一份...
JAXB使用`@XmlRootElement`和`@XmlElement`等注解来识别哪些类和字段应该映射到XML元素。默认情况下,JAXB会自动为这些元素和属性分配命名空间前缀。为了自定义这些前缀,我们需要使用`@XmlSchema`、`@...
JAXB使用注解(Annotations)来定义这些类如何映射到XML结构。常见的注解包括: 1. `@XmlRootElement`:标记一个类作为XML文档的根元素。 2. `@XmlElement`:将类的字段映射为XML元素。 3. `@XmlAttribute`:将类的...
JAXB 使用 javax.xml.bind.annotation 包下的 Java 标注,例如: * @XmlRootElement:标注 Java 类为 XML 根元素 * @XmlElement:标注 Java 属性为 XML 元素 * @XmlAttribute:标注 Java 属性为 XML 属性 六、JAXB...
jaxb开发使用文档 JAXB(Java Architecture for XML Binding)是一种java标准库,用于处理XML与java对象的映射。jaxb技术在javaSE6.0中已经包含了jaxb定义的所有API,在处理XML文档时,使用jaxb要比使用JAXP(DOM、...