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 ...
随机推荐
- UISearchBar cover first cell of UITableView
1.相当重要的是 tableView.tableHeaderView = searchBar; 这一句一定要在 UIViewController viewDidLoad 的时候执行,否则就会出现 se ...
- Solr4+IKAnalyzer的安装配置
一.下载Solr4.10.2 我们以Windows版本为例,solr-4.10.2.zip是目前最新版本,下载地址: http://www.apache.org/dyn/closer.cgi/luce ...
- [LeetCode] Combination Sum (bfs)
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C wher ...
- ArcGIS Engine开发之旅02--ArcGIS Engine中的类库
原文:ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他 ...
- 实验 snort安装配置与规则编写
1 实验目的 在linux或windows任意一个平台下完成snort的安装,使snort工作在NIDS模式下,并编写符合相关情景要求的snort规则. 2 实验环境 物理机:windows 8.1 ...
- [LeetCode]题解(python):104 Maximum Depth of Binary Tree
题目来源 https://leetcode.com/problems/maximum-depth-of-binary-tree/ Given a binary tree, find its maxim ...
- 【C++】C++求vector中的最大最小值
利用algorithm库里的max_element和min_element可以得到vector的最大最小值,配合distance函数可以得到最大值的位置 #include<vector> ...
- Windows-007-进程相关命令(netstat、tasklist、taskkill、tskill)实战实例图文详解
本节主要讲述 Windows 系统下,nestat.tasklist.tskill 三个 CMD 命令的参数,及使用方法:以及如何利用三者结合查看进程信息和结束进程.敬请亲们参阅,希望能对亲们有所帮助 ...
- C语言命名空间
//首先要认识到命名空间的使用条件.#include <stdio.h> typedef struct A { int A; } A; typedef union B { int A; } ...
- Java静态代码分析工具——FindBugs插件的安装与使用
1 什么是FindBugs FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分 ...