Java: xml转换

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

直接上代码:

Student.java:

 1 @XmlRootElement
 2 public class Student {
 3     private String name;
 4     private String width;
 5     private String height;
 6     private int age;
 7     public Student() {
 8         super();
 9     }
10     public Student(String name, String width, String height, int age) {
11         super();
12         this.name = name;
13         this.width = width;
14         this.height = height;
15         this.age = age;
16     }
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public String getWidth() {
24         return width;
25     }
26     public void setWidth(String width) {
27         this.width = width;
28     }
29     public String getHeight() {
30         return height;
31     }
32     public void setHeight(String height) {
33         this.height = height;
34     }
35     public int getAge() {
36         return age;
37     }
38     public void setAge(int age) {
39         this.age = age;
40     }
41     @Override
42     public String toString() {
43         return "Student [name=" + name + ", width=" + width + ", height="
44                 + height + ", age=" + age + "]";
45     }
46
47 }

BaseTest.java:

 1 public class BaseTest {
 2     @Test
 3     public void test01() throws JAXBException {
 4         JAXBContext jc = JAXBContext.newInstance(Student.class);
 5         Marshaller ms = jc.createMarshaller();
 6         ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
 7         ms.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
 8         Student st = new Student("zhang", "w", "h", 11);
 9         ms.marshal(st, new File("student.xml"));
10
11         StringWriter writer = new StringWriter();
12         ms.marshal(st, writer);
13         System.out.println(writer.toString());
14     }
15     @Test
16     public void test02() throws JAXBException {
17         String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
18                 + "<student><age>11</age><height>h</height><name>zhang</name><width>w</width></student>";
19         JAXBContext jc = JAXBContext.newInstance(Student.class);
20         Unmarshaller unmar = jc.createUnmarshaller();
21         File f = new File("student.xml");
22         Student st = (Student)unmar.unmarshal(f);
23         System.out.println(st);
24         Student st1 = (Student)unmar.unmarshal(new StringReader(xml));
25         System.out.println(st1);
26     }
27 }

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

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

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

RootClass:

 1 @XmlRootElement(name="rootclass")
 2 public class RootClass {
 3
 4     private EleClassA a;
 5
 6     private EleClassB b;
 7
 8     private String root;
 9
10     private String rootA;
11     private String transientField;
12
13     public RootClass() {
14         super();
15     }
16     public RootClass(String transientField) {
17         //super();
18         this.transientField = transientField;
19     }
20     private List<String> items;
21
22     @XmlElement(name="eleClassA")
23     public EleClassA getA() {
24         return a;
25     }
26     public void setA(EleClassA a) {
27         this.a = a;
28     }
29     @XmlElement(name="EleClassA")
30     public EleClassB getB() {
31         return b;
32     }
33     public void setB(EleClassB b) {
34         this.b = b;
35     }
36     public String getRoot() {
37         return root;
38     }
39     public void setRoot(String root) {
40         this.root = root;
41     }
42     @XmlTransient
43     public String getRootA() {
44         return rootA;
45     }
46     public void setRootA(String rootA) {
47         this.rootA = rootA;
48     }
49     @XmlElementWrapper(name="items")
50     @XmlElement(name="item")
51     public List<String> getItems() {
52         return items;
53     }
54     public void setItems(List<String> items) {
55         this.items = items;
56     }
57 }

EleClassA:

 1 public class EleClassA {
 2     private String eleA;
 3     private String eleB;
 4     private String attrC;
 5     @XmlElement
 6     public String getEleA() {
 7         return eleA;
 8     }
 9     public void setEleA(String eleA) {
10         this.eleA = eleA;
11     }
12     @XmlElement(name="elebnewname")
13     public String getEleB() {
14         return eleB;
15     }
16     public void setEleB(String eleB) {
17         this.eleB = eleB;
18     }
19     @XmlAttribute
20     public String getAttrC() {
21         return attrC;
22     }
23     public void setAttrC(String attrC) {
24         this.attrC = attrC;
25     }
26
27 }

EleClassB:

 1 public class EleClassB {
 2     private String attrUserName;
 3     private String attrPassword;
 4     private String eleCode;
 5     @XmlAttribute
 6     public String getAttrUserName() {
 7         return attrUserName;
 8     }
 9     public void setAttrUserName(String attrUserName) {
10         this.attrUserName = attrUserName;
11     }
12     @XmlAttribute(name="password")
13     public String getAttrPassword() {
14         return attrPassword;
15     }
16     public void setAttrPassword(String attrPassword) {
17         this.attrPassword = attrPassword;
18     }
19     @XmlElement
20     public String getEleCode() {
21         return eleCode;
22     }
23     public void setEleCode(String eleCode) {
24         this.eleCode = eleCode;
25     }
26 }

AttributeTest:

 1 public class AttributeTest {
 2
 3     @Test
 4     public void test01() throws JAXBException {
 5         RootClass rc = new RootClass("transient");
 6         //RootClass rc = new RootClass();
 7         EleClassA a = new EleClassA();
 8         EleClassB b = new EleClassB();
 9
10         a.setAttrC("attrC");
11         a.setEleA("eleA");
12         a.setEleB("eleB");
13
14         b.setAttrPassword("attrPassword");
15         b.setAttrUserName("attrUsrName");
16         b.setEleCode("eleCode");
17
18         List<String> l = new ArrayList<String>();
19         l.add("yingzhongwen");
20         l.add("hetao");
21         l.add("xinwang");
22
23         rc.setA(a);
24         rc.setB(b);
25         rc.setRoot("root");
26         rc.setRootA("rootA");
27         rc.setItems(l);
28
29         JAXBContext context = JAXBContext.newInstance(RootClass.class);
30         Marshaller mar = context.createMarshaller();
31         mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
32         mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
33
34         StringWriter writer = new StringWriter();
35         mar.marshal(rc, writer);
36         System.out.println(writer.toString());
37     }
38 }
时间: 2024-08-28 15:27:48

Java: xml转换的相关文章

Java对象和XML转换

有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样来设计简单的bean对象. [java] view plain copy @XmlRootElement(name="department") public class Department { private String name;    //部门名称 private List<

有没有最简单的xml转换java类的方法

原文:有没有最简单的xml转换java类的方法 代码下载地址:http://www.zuidaima.com/share/1550463237098496.htm 手动编码太烦人了,每次新增一个java entity类都需要写一个解析器. 有没有最简单的xml转换java类的方法,布布扣,bubuko.com

JAVA XML

                                             JAVA     XML DOM 优缺点:实现 W3C 标准,有多种编程语言支持这种解析方式,并且这种方法本身操作上简单快捷,十分易于初学者掌握.其处理方式是将 XML 整个作为类似树结构的方式读入内存中以便操作及解析,因此支持应用程序对 XML 数据的内容和结构进行修改,但是同时由于其需要在处理开始时将整个 XML 文件读入到内存中去进行分析,因此其在解析大数据量的 XML 文件时会遇到类似于内存泄露以及

转 JSON与XML转换

这两天处理模块的联调工作,在json与XML转换中出现了一些奇怪的问题,仔细究来,实为对org.json.*包知之太少.晚上baidu.google一下,找出了问题出现的原因.在模块中,使用了两个方法,xml2Json()和json2Xml(),主要的问题就出在这两个方法的具体实现上.XML与JSON相互转换的Java类在org.json.*包中常用的有XML.java和JSONML.java,前一半时间花在了json格式与XML生成格式的验证上,json数据串格式没有错,只是在转换的时候需要在

转:如何将 Java 项目转换成 Maven 项目

如何将 Java 项目转换成 Maven 项目 本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确方便.它带给你直观的方便是:你不用在网上找 Jar 包,然后把它复制到 lib 目录,再在项目中引用它.而只需向 pom.xml 写入你需要的 Jar 包依赖,Maven 就能自动从本地仓库或远程仓库下载,并引用-- 如何将一般的 Java 项目转换成

Java XML解析技术

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已.基本的解析方式有两种,一种叫SAX,另一种叫DOM. DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作.通过DOM接口,应用程

【Java】Java XML 技术专题

XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XML Enhancements for Java) XML 验证 XPath XQuery XSL 转换处理器 XStream 数据绑定 本专题汇总了大量面向 Java 开发人员的 XML 技术文章和教程,内容涉及 XML 基础.Java XML 的文档模型.编程 API 与数据绑定框架以及 Java

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

将一个普通的java项目转换成Maven项目并不是一个很大的任务,仅仅只需要下面的几步就能将转换成功.下面我是用一个简单的Selenium测试小demon作为例子来说的. 移调项目中所有关联的Libraries 将Selenium项目转换成Maven项目 增加Maven依赖库到项目中 创建Maven的测试文件夹架构 Step1:移调项目中所有关联的Libraries 选中你需要转换的Project:Build Path > Configure Build Path Step2: 将Seleniu

JAVA对象转换JSON

1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码 代码如下: JSONArray array = JSONArray.fromObject(userlist); String jsonstr = array.toString(); 2.把java对象转换成json对象,并转化为字符串 复制代码 代码如下: JSONObject object = JSONObject.fromObject(invite); String str=object.toString()); 3.