java xml编程强制转换

Python09

java xml编程强制转换,第1张

使用XStream完成 java 类与 XML 互换。

下面代码实现了以下4种基本功能:

1. object类型转换为xml类型,在控制台打印

2. xml类型转换为object类型,在控制台打印

3. 将object类型转换为xml类型,并写入XML文件

4. 读取XML文件,加载进相应Object类型

====================================================

1。加载 XStream 需要的jar包 xstream-1.4.2.jar

xpp3_min-1.1.4c.jar

xmlpull-1.1.3.1.jar

2。创建实体类User.java

package com.entity

/**

* 实体类

*/

public class User {

private String userName

private String passWord

private String registeredTime

public User() { }

public User(String userName, String passWord, String registeredTime) {

this.userName = userName

this.passWord = passWord

this.registeredTime = registeredTime

}

public String getUserName() {

return userName

}

public void setUserName(String userName) {

this.userName = userName

}

public String getPassWord() {

return passWord

}

public void setPassWord(String passWord) {

this.passWord = passWord

}

public String getRegisteredTime() {

return registeredTime

}

public void setRegisteredTime(String registeredTime) {

this.registeredTime = registeredTime

}

}

3。编写功能实现类

package com.switcher

import java.io.FileInputStream

import java.io.FileNotFoundException

import java.io.FileOutputStream

import java.text.SimpleDateFormat

import java.util.Date

import com.entity.User

import com.thoughtworks.xstream.XStream

/**

*

* 使用 XStream不用任何映射就能实现多数 Java 对象的序列化。

* 在生成的 XML中对象名变成了元素名,类中的字符串组成了 XML中的元素内容。

* 使用 XStream 序列化的类不需要实现 Serializable 接口。

* XStream 是一种序列化工具而不是数据绑定工具

* 不能从XML 或者 XML Schema Definition (XSD) 文件生成类。

*/

public class SwitchXML {

/*

* XStream 不关心序列化/逆序列化的类的字段的可见性。

* 序列化/逆序列化类的字段不需要 getter 和 setter 方法。

* 序列化/逆序列化的类不需要有默认构造函数。

*/

private XStream xStream = new XStream()

private String xmlPath = "D:/userdata.xml"

// 1. obj ->xml(object类型转换为xml类型)

public String printXML(User user) {

System.out.println("obj ->xml")

String xml = xStream.toXML(user)

System.out.println(xml)

return xml

}

// 2. xml->obj(xml类型转换为object类型,并打印)

public void printObj(String xml) {

System.out.println("xml ->obj")

User u = (User) xStream.fromXML(xml)

System.out.println(u.getUserName() + " " + u.getPassWord() + " " + u.getRegisteredTime())

}

// 3. 将object类型转换为xml类型,并写入XML文件(其他格式也可以,比如txt文件)

public void writerXML(User user) {

try {

FileOutputStream fs = new FileOutputStream(xmlPath)

xStream.toXML(user, fs)

} catch (FileNotFoundException e) {

e.printStackTrace()

}

}

// 4. 读取XML文件,加载进相应Object类型

public void readerXML() {

User user = new User()

FileInputStream fis = null

try {

fis = new FileInputStream(xmlPath)

} catch (FileNotFoundException e) {

e.printStackTrace()

}

xStream.fromXML(fis, user)

// 打印对象信息

System.out.println(user.toString())

// 打印对象的属性值

System.out.println(user.getUserName() + "-" + user.getPassWord() + "-"

+ user.getRegisteredTime())

}

public static void main(String[] args) {

// 用户名

String username = "admin"

// 密码

String password = "admin"

// 注册时间

Date now = new Date()

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss")

String registeredtime = format.format(now)

User user = new User(username, password, registeredtime)

SwitchXML switchXML = new SwitchXML()

// 1. object类型转换为xml类型,在控制台打印

String xml = switchXML.printXML(user)

System.out.println("---------------------")

// 2. xml类型转换为object类型,在控制台打印

switchXML.printObj(xml)

System.out.println("---------------------")

// 3. 将object类型转换为xml类型,并写入XML文件

switchXML.writerXML(user)

System.out.println("---------------------")

// 4. 读取XML文件,加载进相应Object类型

switchXML.readerXML()

}

import java.beans.XMLDecoder

import java.beans.XMLEncoder

import java.io.BufferedInputStream

import java.io.BufferedOutputStream

import java.io.File

import java.io.FileInputStream

import java.io.FileNotFoundException

import java.io.FileOutputStream

import java.io.IOException

public class Object2XML {

public static String object2XML(Object obj, String outFileName)

throws FileNotFoundException {

// 构造输出XML文件的字节输出流

File outFile = new File(outFileName)

BufferedOutputStream bos = new BufferedOutputStream(

new FileOutputStream(outFile))

// 构造一个XML编码器

XMLEncoder xmlEncoder = new XMLEncoder(bos)

// 使用XML编码器写对象

xmlEncoder.writeObject(obj)

// 关闭编码器

xmlEncoder.close()

return outFile.getAbsolutePath()

}

public static Object xml2Object(String inFileName)

throws FileNotFoundException {

// 构造输入的XML文件的字节输入流

BufferedInputStream bis = new BufferedInputStream(

new FileInputStream(inFileName))

// 构造一个XML解码器

XMLDecoder xmlDecoder = new XMLDecoder(bis)

// 使用XML解码器读对象

Object obj = xmlDecoder.readObject()

// 关闭解码器

xmlDecoder.close()

return obj

}

public static void main(String[] args) throws IOException {

// 构造一个StudentBean对象

StudentBean student = new StudentBean()

student.setName("wamgwu")

student.setGender("male")

student.setAge(15)

student.setPhone("55556666")

// 将StudentBean对象写到XML文件

String fileName = "AStudent.xml"

Object2XML.object2XML(student, fileName)

// 从XML文件读StudentBean对象

StudentBean aStudent = (StudentBean)Object2XML.xml2Object(fileName)

// 输出读到的对象

System.out.println(aStudent.toString())

}

}