不一样的XML处理

本文介绍了一种名为xStream的工具,它能够将XML与Java对象进行互转,简化了传统XML处理过程中的两步操作。通过提供两个辅助类作为JavaBean,演示了如何使用xStream实现XML到Java对象的转换,以及如何反向操作。总结了xStream的基本使用方法,包括alias、toXML和fromXML方法的应用。

       在以前的xml处理中,本人一直使用dom或者sax,首先解析xml文档,然后把解析出来的数据填入到一个对象中,最后在程序中使用这个对象。程序员就是懒,最近在网上看到了可以直接把XML和Java对象互相转换的工具,觉得非常棒,以下是一个简单的例子。

     

       这种方式叫做xStream,它并不是一种新的解析形式,只是把以前的解析,填装两步封装在一起,让我们觉得更加好用而已,解析的支持默认的是xpp3,当然你也可以使用dom或者其他的,无关紧要。在开始例子之前,需要下载两个支持包:xpp3.jar和xstream-1.4.1.jar,地址分别是:http://www.java2s.com/Code/Jar/STUVWXYZ/Downloadxpp3jar.htmhttp://xstream.codehaus.org/download.html

 

       代码:

1.两个辅助类(JavaBean):

package app.xstream;

public class Person {
	private String firstName;
	private String lastName;
	private PhoneNumber phonex;
	private PhoneNumber fax;

	public Person(String firstName, String lastName, PhoneNumber phonex, PhoneNumber fax) {
		this.firstName = firstName;
		this.lastName = lastName;
		this.phonex = phonex;
		this.fax = fax;
	}

	public Person(String firstName, String lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public PhoneNumber getPhonex() {
		return phonex;
	}

	public void setPhonex(PhoneNumber phonex) {
		this.phonex = phonex;
	}

	public PhoneNumber getFax() {
		return fax;
	}

	public void setFax(PhoneNumber fax) {
		this.fax = fax;
	}

}


 

package app.xstream;

public class PhoneNumber {

	private int code;
	private int number;

	public PhoneNumber(int code, int number) {
		super();
		this.code = code;
		this.number = number;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

}


2.测试类:

package app.xstream;

import com.thoughtworks.xstream.XStream;

/**
 * 
 * @author 冯小卫
 * 
 */
public class Main {
	public static void main(String[] args) {
		// XStream可以完成XML和普通的Java对象之间的转换
		XStream xStream = new XStream();
		// 构建Java对象和XML中结构体的联系
		xStream.alias("person", Person.class);

		Person joe = new Person("Joe", "Walnes");
		joe.setPhonex(new PhoneNumber(123, 456));
		joe.setFax(new PhoneNumber(123, 110));
		// 把Java对象转化为XML文件
		String xml = xStream.toXML(joe);
		System.out.println(xml);

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

		// 把XML文件解析为Java对象
		Person newJoe = (Person) xStream.fromXML(xml);
		System.out.println(newJoe.getFirstName() + " " + newJoe.getLastName() + " " + newJoe.getPhonex().getCode() + " " + newJoe.getPhonex().getNumber() + " "
				+ newJoe.getFax().getCode() + " " + newJoe.getFax().getNumber());
	}

}


 

总结:

使用xStream.alias(String elementName, Class cls)为任何一个自定义类创建到类到元素的别名(不是必须的,可以自己试一下);

使用xStream.toXML(Object obj)转换对象到XML;

使用xStream.fromXML(String xml)转换XML到对象

 

SQL 文件和 XML 文件在 IT 领域中分别扮演着同的角色,其主要区别体现在用途、结构以及数据操作方式等方面。 ### 用途 SQL 文件通常用于存储数据库相关的命令脚本,包括创建表、插入数据、更新记录或执行查询等。这类文件可以直接被数据库管理系统(如 MySQL、PostgreSQL 或 SQL Server)解析并执行,从而对数据库进行各种管理和操作 [^3]。例如: ```sql CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100), email VARCHAR(150) ); ``` 而 XML (eXtensible Markup Language) 文件则是一种通用的数据交换格式,它允许用户定义自己的标记来描述数据的结构和内容。XML 被设计用来传输和存储数据,而是显示数据。它可以被多种应用程序读取和写入,并且支持跨平台的数据共享 [^2]。一个简单的 XML 示例可能如下所示: ```xml <book> <year>2024</year> <title>Understanding XML</title> <author>John Doe</author> <publisher>Publisher Inc.</publisher> <price>$29.99</price> </book> ``` ### 结构 SQL 文件中的语句是按照特定语法编写的指令集,这些指令直接作用于数据库系统以改变其状态。它们具有层级结构,而是线性排列的一系列命令 [^3]。 XML 文件采用树形结构组织信息,每个文档都有一个根元素,其他所有元素都是这个根元素的节点。这种层次化的结构非常适合表示复杂的数据关系 [^2]。 ### 数据操作方式 对于 SQL 文件来说,其中包含的命令可以通过数据库客户端工具或者编程语言中的数据库接口执行,以此实现对数据库的操作。比如使用 `INSERT`, `UPDATE`, `DELETE` 等语句修改数据库中的数据 [^3]。 处理 XML 文件时,则需要借助专门的解析器或者库来进行数据的提取、修改和保存。常见的方法有 DOM (Document Object Model) 和 SAX (Simple API for XML),前者适合小规模文档因为它会将整个文档加载到内存中;后者则是基于事件驱动的方式处理大型文档更为高效 [^2]。 通过上述对比可以看出,尽管两者都可以与数据打交道,但 SQL 更侧重于数据库的操作与管理,XML 则更关注于数据本身的结构化表达及其跨系统的传递。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值