java对于xml的转换有很多种,比较有名的有:DOM, DOM4J, JDOM, SAX。这里要介绍的是javax.xml包的对xml文件的转换。相比于前面几种是最简单的。

直接上代码:

Student.java:

 @XmlRootElement
 public class Student {
     private String name;
     private String width;
     private String height;
     private int age;
     public Student() {
         super();
     }
     public Student(String name, String width, String height, int age) {
         super();
         this.name = name;
         this.width = width;
         this.height = height;
         this.age = age;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public String getWidth() {
         return width;
     }
     public void setWidth(String width) {
         this.width = width;
     }
     public String getHeight() {
         return height;
     }
     public void setHeight(String height) {
         this.height = height;
     }
     public int getAge() {
         return age;
     }
     public void setAge(int age) {
         this.age = age;
     }
     @Override
     public String toString() {
         return "Student [name=" + name + ", width=" + width + ", height="
                 + height + ", age=" + age + "]";
     }

 }

BaseTest.java:

 public class BaseTest {
     @Test
     public void test01() throws JAXBException {
         JAXBContext jc = JAXBContext.newInstance(Student.class);
         Marshaller ms = jc.createMarshaller();
         ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
         ms.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
         Student st = new Student("zhang", "w", "h", 11);
         ms.marshal(st, new File("student.xml"));

         StringWriter writer = new StringWriter();
         ms.marshal(st, writer);
         System.out.println(writer.toString());
     }
     @Test
     public void test02() throws JAXBException {
         String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
                 + "<student><age>11</age><height>h</height><name>zhang</name><width>w</width></student>";
         JAXBContext jc = JAXBContext.newInstance(Student.class);
         Unmarshaller unmar = jc.createUnmarshaller();
         File f = new File("student.xml");
         Student st = (Student)unmar.unmarshal(f);
         System.out.println(st);
         Student st1 = (Student)unmar.unmarshal(new StringReader(xml));
         System.out.println(st1);
     }
 }

@XmlRootElement即是对该类进行反射映射为xml。

如果没有@XmlElement,默认对Property进行反射,xml node的名字与该属性名相同,如果不同,需要加上@XmlElement

如果有@XmlElement,注意该注解必须放与get方法之前。

RootClass:

 @XmlRootElement(name="rootclass")
 public class RootClass {

     private EleClassA a;

     private EleClassB b;

     private String root;

     private String rootA;
     private String transientField;

     public RootClass() {
         super();
     }
     public RootClass(String transientField) {
         //super();
         this.transientField = transientField;
     }
     private List<String> items;

     @XmlElement(name="eleClassA")
     public EleClassA getA() {
         return a;
     }
     public void setA(EleClassA a) {
         this.a = a;
     }
     @XmlElement(name="EleClassA")
     public EleClassB getB() {
         return b;
     }
     public void setB(EleClassB b) {
         this.b = b;
     }
     public String getRoot() {
         return root;
     }
     public void setRoot(String root) {
         this.root = root;
     }
     @XmlTransient
     public String getRootA() {
         return rootA;
     }
     public void setRootA(String rootA) {
         this.rootA = rootA;
     }
     @XmlElementWrapper(name="items")
     @XmlElement(name="item")
     public List<String> getItems() {
         return items;
     }
     public void setItems(List<String> items) {
         this.items = items;
     }
 }

EleClassA:

 public class EleClassA {
     private String eleA;
     private String eleB;
     private String attrC;
     @XmlElement
     public String getEleA() {
         return eleA;
     }
     public void setEleA(String eleA) {
         this.eleA = eleA;
     }
     @XmlElement(name="elebnewname")
     public String getEleB() {
         return eleB;
     }
     public void setEleB(String eleB) {
         this.eleB = eleB;
     }
     @XmlAttribute
     public String getAttrC() {
         return attrC;
     }
     public void setAttrC(String attrC) {
         this.attrC = attrC;
     }

 }

EleClassB:

 public class EleClassB {
     private String attrUserName;
     private String attrPassword;
     private String eleCode;
     @XmlAttribute
     public String getAttrUserName() {
         return attrUserName;
     }
     public void setAttrUserName(String attrUserName) {
         this.attrUserName = attrUserName;
     }
     @XmlAttribute(name="password")
     public String getAttrPassword() {
         return attrPassword;
     }
     public void setAttrPassword(String attrPassword) {
         this.attrPassword = attrPassword;
     }
     @XmlElement
     public String getEleCode() {
         return eleCode;
     }
     public void setEleCode(String eleCode) {
         this.eleCode = eleCode;
     }
 }

AttributeTest:

 public class AttributeTest {

     @Test
     public void test01() throws JAXBException {
         RootClass rc = new RootClass("transient");
         //RootClass rc = new RootClass();
         EleClassA a = new EleClassA();
         EleClassB b = new EleClassB();

         a.setAttrC("attrC");
         a.setEleA("eleA");
         a.setEleB("eleB");

         b.setAttrPassword("attrPassword");
         b.setAttrUserName("attrUsrName");
         b.setEleCode("eleCode");

         List<String> l = new ArrayList<String>();
         l.add("yingzhongwen");
         l.add("hetao");
         l.add("xinwang");

         rc.setA(a);
         rc.setB(b);
         rc.setRoot("root");
         rc.setRootA("rootA");
         rc.setItems(l);

         JAXBContext context = JAXBContext.newInstance(RootClass.class);
         Marshaller mar = context.createMarshaller();
         mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
         mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

         StringWriter writer = new StringWriter();
         mar.marshal(rc, writer);
         System.out.println(writer.toString());
     }
 }

Java: xml转换的更多相关文章

  1. Java对象转换成xml对象和Java对象转换成JSON对象

    1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...

  2. Java对象和XML转换

    有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样 ...

  3. Dom4j把xml转换成Map(非固定格式)

    将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...

  4. 【Java】Java XML 技术专题

    XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XM ...

  5. 转 JSON与XML转换

    这两天处理模块的联调工作,在json与XML转换中出现了一些奇怪的问题,仔细究来,实为对org.json.*包知之太少.晚上baidu.google一下,找出了问题出现的原因.在模块中,使用了两个方法 ...

  6. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  7. 如何将 Java 项目转换成 Maven 项目

    本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确 ...

  8. Maven 学习笔记——将普通的Java项目转换成Maven项目(3)

    将一个普通的java项目转换成Maven项目并不是一个很大的任务,仅仅只需要下面的几步就能将转换成功.下面我是用一个简单的Selenium测试小demon作为例子来说的. 移调项目中所有关联的Libr ...

  9. jsonUtils&&Json、Xml转换工具Jackson使用

    1.jsonUtils package com.icil.utils; import java.util.List; import com.fasterxml.jackson.core.JsonPro ...

随机推荐

  1. DefaultHttpClient使用

    转自:http://username2.iteye.com/blog/1664995 博客分类:  java 工具类 javaio  ]; } json = JSONObject.fromObject ...

  2. myeclipse 8.5 常用快捷键【转】

    eclipse 里查找行号的方法 今天开发的时候为了方便查找报错行的位置,特意在网上找了一下快捷键是什么,现做记录. 在Eclipse里的show the line number 后,使用" ...

  3. 数据库主键跟外键+修改mysql的密码

    update myspl.user set password=PASSWORD(设置的密码)  where user='root'; 如果修改错误:先执行use mysple;再重复上面的代码. 一. ...

  4. jQuery EasyUI---validatebox 校验规则扩展

    EasyUI 的 validatebox 插件, 验证规则相对比较单一也比较少,如下. rules: { email:{ validator: function(value){ return ...? ...

  5. Android 环境快速搭建-详细步骤-win7-64bit

    电脑装了win7 64位的系统,重新来搭建了安卓环境,发现有一种非常便捷,快速的方法就可以搭建起来了~ 步骤一:下载java sdk 进入http://www.oracle.com/us/sun/in ...

  6. C#中Attribute介绍

    什么是特性? MSDN中定义为:公共语言运行时运行添加类似关键字的描述声明,叫做Attribute,它对程序中的元素进行标注,如类型.方法.字段和属性等.attribute和Microsoft.Net ...

  7. javascript 模式方面的学习

    看了好多网上的文章,基本上得到一个结论:一些写类工具函数或框架的写类方式本质上都是 构造函数+原型 1.用构造函数来定义类属性(字段).2.用原型方式来定义类的方法. 具体文章请参阅 JavaScri ...

  8. JS事件分析

    1.注册事件 1.1 使用HTML元素的事件属性 <div id='myDiv' style="width:100px;height:100px;background-color:re ...

  9. Selenium2学习-014-WebUI自动化实战实例-012-Selenium 操作下拉列表实例-div+{js|jquery}

    之前已经讲过了 Selenium 操作 Select 实现的下拉列表:Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select,但是在实际的日 ...

  10. php 显示某一个时间相当于当前时间在多少秒前,多少分钟前,多少小时前

    /* *function:显示某一个时间相当于当前时间在多少秒前,多少分钟前,多少小时前 *timeInt:unix time时间戳 *format:时间显示格式 */ public function ...