xmlを読み込みJavaオブジェクトに変換

5678 ワード

XMLは、データを転送および格納するように設計されている.
主な用途:1.XMLはHTMLからデータを分離する
HTMLドキュメントにダイナミックデータを表示する必要がある場合は、データが変更されるたびにHTMLを編集するのに多くの時間がかかります.XMLにより、データを独立したXMLファイルに格納することができる.これにより、HTMLを使用してレイアウトや表示に専念し、下位データの変更にHTMLを変更する必要がなくなります.JavaScriptを数行使用すると、外部XMLファイルを読み込み、HTMLのデータ内容を更新できます.
2.XMLデータ共有の簡略化
実際の世界では、コンピュータシステムとデータは互換性のないフォーマットを使用してデータを格納します.XMLデータは、純粋なテキスト形式で格納されるため、ソフトウェアおよびハードウェアとは独立したデータ格納方法が提供される.これにより、異なるアプリケーションで共有できるデータの作成が容易になります.
3.XML簡略化データ転送XMLにより,互換性のないシステム間で容易にデータを交換できる.開発者にとって、最も時間のかかる課題の1つは、インターネット上の互換性のないシステム間でデータを交換することです.この複雑さは、様々な互換性のないアプリケーションによってデータを読み取ることができるため、XMLでデータを交換することによって低減される.
4.XML簡略化プラットフォームの変更を新しいシステム(ハードウェアまたはソフトウェアプラットフォーム)にアップグレードするには、常に時間がかかる.大量のデータを変換しなければならないため、互換性のないデータはしばしば失われる.XMLデータはテキスト形式で保存される.これにより、XMLはデータを損失することなく、新しいオペレーティングシステム、新しいアプリケーション、または新しいブラウザに拡張またはアップグレードしやすくなる.
5.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はdom 4 jの一つのクラスであり、SAXReaderは主にXMLファイルの解析に用いられ、現在比較的流行しているxmlソリューションである.
dom 4 jは非常に優れたJava XML APIであり、XMLファイルを読み書きするために使用され、性能に優れ、機能が強く、極端に使いやすいという特徴があり、同時にオープンソースのソフトウェアでもある.