读取xml并转换为Java对象

XML 被设计用来传输和存储数据。

主要用途:

1.XML 把数据从 HTML 分离


如果你需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。
通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。
通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容


2.XML 简化数据共享


在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。
XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。
这让创建不同应用程序可以共享的数据变得更加容易。


3.XML 简化数据传输
通过 XML,可以在不兼容的系统之间轻松地交换数据。
对开发人员来说,其中一项最费时的挑战一直是在因特网上的不兼容系统之间交换数据。
由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了这种复杂性。


4.XML 简化平台的变更
升级到新的系统(硬件或软件平台),总是非常费时的。必须转换大量的数据,不兼容的数据经常会丢失。
XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。


5.XML 使您的数据更有用
由于 XML 独立于硬件、软件以及应用程序,XML 使您的数据更可用,也更有用。
不同的应用程序都能够访问您的数据,不仅仅在 HTML 页中,也可以从 XML 数据源中进行访问。
通过 XML,您的数据可供各种阅读设备使用(手持的计算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。

代码:

users.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
	<region city="chongqing">
		<user loginName="xiaohong" password="321321" address="NO.1"/>
		<user loginName="xiaoming" password="321321" address="NO.2"/>
		<user loginName="daming" password="321321" address="NO.3"/>
	</region>
	<region city="dalian">
		<user loginName="haige" password="321321" address="NO.4"/>
		<user loginName="rg" password="321321" address="NO.4"/>
		<user loginName="hg" password="321321" address="NO.5"/>
		<user loginName="ff" password="321321" address="NO.6"/>
		<user loginName="ll" password="321321" address="NO.7"/>
	</region>
</root>

ReadXmlToJava.java


package test.fortest;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import test.model.User;

public class ReadXmlToJava {
	public static void main(String args[]) {
		Map<String, User> usersMap = new HashMap<String, User>();
		SAXReader reader = new SAXReader();
		String appFilePath = "D:"+File.separator + "ForLearn" + File.separator + 
				"Example" + File.separator + "mavenEx" + File.separator  + "exampleF" + File.separator +
				"src"+ File.separator  + "main" + File.separator  + "webapp" + File.separator +
				"WEB-INF" + File.separator + "users.xml";
		try {
			//读取xml文档。
			Document document = reader.read(new File(appFilePath));
			//读取根节点元素。
			Element rootElement = document.getRootElement();
			//读取根元素的下面的所有子元素。
			Iterator cityElements = rootElement.elementIterator();
			while(cityElements.hasNext()) {
				Element cityElement = (Element) cityElements.next();
				String city = cityElement.attributeValue("city");
				Iterator userElements = cityElement.elementIterator();
				while(userElements.hasNext()) {
					Element userElement = (Element) userElements.next();
					User user = new User();
					user.setLoginName(userElement.attributeValue("loginName"));
					user.setPassword(userElement.attributeValue("password"));
					user.setAddress(userElement.attributeValue("address"));
					usersMap.put(userElement.attributeValue("loginName"), user);
				}
			}
			System.out.println(appFilePath);
			System.out.println("usersMap size : " + usersMap.size());
			User user = usersMap.get("xiaohong");
			System.out.println("loginName : " + user.getLoginName() + " " 
					+ "password : " + user.getPassword() + " "
					+ "address : " + user.getAddress());
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}

}

user.java

package test.model;

import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "users", schema = "public")
public class User extends AbsEntity implements IEntity{
	
	private String loginName;
	
	private String password;
	
	private String address;
	
	@ManyToOne
	private Role role;

	public String getLoginName() {
		return loginName;
	}

	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public Role getRole() {
		return role;
	}

	public void setRole(Role role) {
		this.role = role;
	}

	@Deprecated
	public String getDisplayString() {
		return "this is a user";
	}
}

输出:

D:\ForLearn\Example\mavenEx\exampleF\src\main\webapp\WEB-INF\users.xml
usersMap size : 8
loginName : xiaohong password : 321321 address : NO.1




    这里用到SAXReader来读取users.xml。users.xml里面存放的是用户的一些信息,每一个〈user〉元素的属性对应着实体Java类的user.java的一个属性。 


    SAXReader是dom4j中的一个类,SAXReader主要用于解析XML文件,是当前比较流行的xml解决方案.

    dom4j是一个非常非常优秀的Java XML API,用来读写XML文件的,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件

转载于:https://my.oschina.net/u/1583086/blog/283369

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值