Java: xml转换
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转换的更多相关文章
- Java对象转换成xml对象和Java对象转换成JSON对象
1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...
- Java对象和XML转换
有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样 ...
- Dom4j把xml转换成Map(非固定格式)
将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...
- 【Java】Java XML 技术专题
XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XM ...
- 转 JSON与XML转换
这两天处理模块的联调工作,在json与XML转换中出现了一些奇怪的问题,仔细究来,实为对org.json.*包知之太少.晚上baidu.google一下,找出了问题出现的原因.在模块中,使用了两个方法 ...
- 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来 ...
- 如何将 Java 项目转换成 Maven 项目
本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确 ...
- Maven 学习笔记——将普通的Java项目转换成Maven项目(3)
将一个普通的java项目转换成Maven项目并不是一个很大的任务,仅仅只需要下面的几步就能将转换成功.下面我是用一个简单的Selenium测试小demon作为例子来说的. 移调项目中所有关联的Libr ...
- jsonUtils&&Json、Xml转换工具Jackson使用
1.jsonUtils package com.icil.utils; import java.util.List; import com.fasterxml.jackson.core.JsonPro ...
随机推荐
- 【转】UGUI实现unity摇杆
http://blog.csdn.net/onafioo/article/details/46403801 http://www.winig.cc/archives/348 好久没有写文章了,最近在做 ...
- WPF自定义RoutedEvent事件示例代码
************************* 引用网友,便于查找所用..... 创建自定义路由事件和应用分为6个步骤: (1)自定义路由事件参数对象 (2)声明并注册路由事件 (3)为路由事件添 ...
- 应中DOS中断显示字符串(摘自《汇编语言》王爽)
data segment s1 db 'Good,better,best,$' s2 db 'Never let it rest,$' s3 db 'Till good is better,$' s4 ...
- Delphi调用约定
Register Calling Convention Ojbect Pascal的默认调用约定为register,寄存器调用约定会将前三个参数依次放入eax,edx,ecx,返回值是eax(根据类型 ...
- CSS3新添加的选择器
---条件选择器:--- .ccc[cusid*= value] { backgroud-color:#0094ff; } //表示使用了class="ccc"元素自定义属性cus ...
- ArcSDE for SQL Server安装及在ArcMap中创建ArcSDE连接
原文:ArcSDE for SQL Server安装及在ArcMap中创建ArcSDE连接 安装ArcSDE for SQL Server,最后一步成功后的界面如下: 在ArcMap中创建ArcSDE ...
- 如何做好多语言(小语种)网站SEO
摘自http://www.life-cream.com/how-to-do-multi-language-seo/ 这篇文章在今年4月就开了头,一直到今天才把坑填好,我是有多懒.在动笔之前本来有个前缀 ...
- Subset---poj3977(折半枚举+二分查找)
题目链接:http://poj.org/problem?id=3977 给你n个数,找到一个子集,使得这个子集的和的绝对值是最小的,如果有多种情况,输出子集个数最少的: n<=35,|a[i]| ...
- imx6 otg host support
本文记录添加imx6 otg host支持的过程. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6108560.html https://communi ...
- 人脸pts文件检查及人脸框输出
function output() outtxt = fopen('D:\AR database\kz.txt','wt'); : imgpath= strcat('D:\AR database\kz ...