JAXB之HelloWorld.入门小DEMO.
JAXB之HelloWorld.入门小DEMO.
Zhao-Qian 发表于5年前
JAXB之HelloWorld.入门小DEMO.
  • 发表于 5年前
  • 阅读 1627
  • 收藏 2
  • 点赞 1
  • 评论 4

【腾讯云】新注册用户域名抢购1元起>>>   

直接贴代码好哇...

首选是实体对象.

package org.credo;

import java.io.Serializable;

import javax.inject.Named;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

/**
 * @XmlAccessorType(XmlAccessType.FIELD)指定映射本类的所有字段
 * @XmlRootElement 用在class类的注解,常与@XmlRootElement,@XmlAccessorType一起使用.也可以单独使用,如果单独使用,需要在get方法上加@XmlElement等注解.
 * @XmlType,在使用@XmlType的propOrder 属性时,必须列出JavaBean对象中的所有XmlElement,否则会报错。
 * @author ZhaoQian
 * 
 */
@Named
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Customer")
@XmlType(name = "Customer", propOrder = { "age", "name" })
public class Customer implements Serializable {

	private static final long serialVersionUID = 1L;
	
	// 其实@XmlType已经默认会读取下面的name和age.@XmlElement在@XmlType存在的情况下,只会起到一个标识作用.
	@XmlAttribute
	int id;
	@XmlElement
	String name;
	@XmlElement
	int age;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
然后是将java对象转换为xml变相的main方法.
package org.credo;

import java.io.File;

import javax.inject.Inject;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

/**
 *JAXB,输出一个XML文件进行交互.
 */
public class JaxbExample {
	
	@Inject Customer customer;
	
	public static void main(String[] args) {
		Customer cus=new Customer();
		cus.setId(1);
		cus.setName("Hello World!");
		cus.setAge(26);
		
		try {
			File file=new File("D:\\HelloWorld.xml");
			//初始化JAXBContext.JAXBContext类提供的JAXB API的客户端的入口点。
			//它提供一个抽象的用于管理XML / Java绑定的必要信息,以实现JAXB绑定框架行动:解组,编组和验证。
			JAXBContext jc=JAXBContext.newInstance(Customer.class);
			//将Java对象Marshal成XML内容的Marshal的初始化设置.
			Marshaller jaxbMarshaller=jc.createMarshaller();
			//output
			jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
			jaxbMarshaller.marshal(cus, file);
			jaxbMarshaller.marshal(cus, System.out);
			
		} catch (JAXBException e) {
			System.out.println("output xml error!");
			e.printStackTrace();
		}
	}
	
	/**
	 * Test CDI
	 */
	public void processXml(){
		this.customer.setAge(26);
		this.customer.setId(1);
		this.customer.setName("HelloWorld");
	}
}
接着和上面反着来.
package org.credo;

import java.io.File;

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

/**
 *读取一个XML文件并输出对象.
 */
public class XMLExample {

	public static void main(String[] args) {
		File file=new File("D:\\HelloWorld.xml");
		try {
			//反着来
			JAXBContext jc=JAXBContext.newInstance(Customer.class);
			Unmarshaller unmarshaller=jc.createUnmarshaller();
			Customer cus=(Customer) unmarshaller.unmarshal(file);
			System.out.println("data:"+cus);
			System.out.println("data:"+cus.getId());
			System.out.println("data:"+cus.getName());
			System.out.println("data:"+cus.getAge());
		} catch (JAXBException e) {
			System.out.println("input xml error!");
			e.printStackTrace();
		}
		
	}

}

= =!

标签: jaxb 入门 demo
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 308
博文 155
码字总数 236857
评论 (4)
小小贝
楼主牛B啊
Zhao-Qian

引用来自“小小贝”的评论

楼主牛B啊

滚蛋,你丫又来笑话我了......这个在OS上红薯老大写的,我学红薯的.
小小贝

引用来自“Credo”的评论

引用来自“小小贝”的评论

楼主牛B啊

滚蛋,你丫又来笑话我了......这个在OS上红薯老大写的,我学红薯的.

楼主经过深入理解红薯大大文章后,写得如些神作啊。
Zhao-Qian

引用来自“小小贝”的评论

引用来自“Credo”的评论

引用来自“小小贝”的评论

楼主牛B啊

滚蛋,你丫又来笑话我了......这个在OS上红薯老大写的,我学红薯的.

楼主经过深入理解红薯大大文章后,写得如些神作啊。

贝哥不要这么无耻啊.
×
Zhao-Qian
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: