XBlink操作XMLの使用

7233 ワード


1.なぜXBlinkを使うのですか?
 
2つのアイテムがインタラクティブになり、XMLがインタラクティブに使用されます.
XBlinkを使用すると、この作業を簡単にできます.
 
XBlinkプロジェクトアドレス:http://code.google.com/p/xblink/
 
 
2.使用方法
 
まずXBlinkのjarパッケージをプロジェクトのCLASSSPATHに組み込む
 
プロジェクトに共通のツールクラスを2つ書きます.内容は以下の通りです.
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.List;

import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.xblink.XBlink;

import test.AppUser;

/**
 *       XML
 * 
 *
 */
@SuppressWarnings("unchecked")
public class DataToXML {
	public static Log log = Logs.get();
	
	/**
	 *        XML
	 * 
	 * @throws Exception
	 */
	public static void buildAppUserUseXBlink(String fileNamePath,List<AppUser> userList) throws Exception{
		if(null != userList){
			log.info("   (app_user)    ...");
			outPutXMLUseXBlink(userList, new Class[]{AppUser.class}, fileNamePath, "appUser.xml");
		}
	}
	
	/**
	 *   XBlink  XML 
	 * 
	 * @param o         
	 * @param classes          class  
	 * @param path   
	 * @param fileName     (      )
	 * @throws Exception
	 */
	public static void outPutXMLUseXBlink(Object o,Class[] classes,String path,String fileName) throws Exception{
		File file = new File(path);
		boolean exists = file.exists();
		if (exists == false) {
			file.mkdirs();
		}
		String outPath = path + "/" + fileName;
		File f = new File(outPath);
		FileOutputStream fos = new FileOutputStream(f);
		OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
		XBlink.registerClassesToBeUsed(classes);
		XBlink.toXml(o, osw);
		osw.close();
	}
	
	
}
 
 
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.xblink.XBlink;

import util.PropertiesManager;

/**
 *  XML     
 * 
 *
 */
@SuppressWarnings("unchecked")
public class XMLToData {
	public static Log log = Logs.get();
	
	/**
	 *  XML     
	 * 
	 * @param classes  
	 * @param fileName XML   
	 * @return Object
	 * @throws Exception
	 */
	public static Object getObjectFromXMLUseXBlink(Class[] classes,String fileName) throws Exception{
		Object tempObj = getObjectFromXMLUseXBlink(classes, PropertiesManager.SAVE_PATH, fileName);
		return tempObj;
	}
	
	/**
	 *  XML     
	 * 
	 * @param classes  
	 * @param path   
	 * @param fileName XML   
	 * @return Object
	 * @throws Exception
	 */
	public static Object getObjectFromXMLUseXBlink(Class[] classes,String path,String fileName) throws Exception{
		path = path + "/" +fileName;
		File f = new File(path);
		if(f.exists()){//    
			FileInputStream fis = new FileInputStream(f);
			InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
			XBlink.registerClassesToBeUsed(classes);
			Object tempObj = XBlink.fromXml(isr);
			isr.close();
			return tempObj;
		}else{
			return null;
		}
	}
	
}
 
次はmodelの構成です.構成の鍵は次のとおりです(具体的にはXBlink公式サイトを参照).
 
 
import lombok.Data;

import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.Table;
import org.xblink.annotation.XBlinkConverter;
import org.xblink.annotation.XBlinkOmitField;
import org.xblink.core.convert.converters.singleValue.BooleanConverter;
import org.xblink.core.convert.converters.singleValue.DateConverter;
import org.xblink.core.convert.converters.singleValue.IntegerConverter;
import org.xblink.core.convert.converters.singleValue.LongConverter;

@Table("app_user")
@Data
public class AppUser {

    @XBlinkOmitField
    @Id
    private Long id;
    private String username;
    private String password; 
    private String confirmPassword;
    private String passwordHint;
    private String firstName;
    private String lastName;
    private String email;
    private String phoneNumber;
    private String website;
    private String address;
    @XBlinkConverter(value=IntegerConverter.class)
    private Integer version;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean enabled;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean accountExpired;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean accountLocked;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean credentialsExpired;
    @XBlinkConverter(value=LongConverter.class)
    private Long userLevel;
    private String birthday;
    private String sex;
    private String duty;
    private String language;
    private String mobilePhone;
    private String company;
    @XBlinkConverter(value=DateConverter.class)
    private Date expireTime;
    @XBlinkConverter(value=BooleanConverter.class)
    private boolean isAdmin;
    private String memo;
    private String uuId;
    private String fullName ;
	
}
 
 
ここで,@XBlinkOmitFieldは生成されたXMLには表示されず,@XBlinkConverterはフォーマット変換であることがよく理解できる.
 
 
次に、次のように呼び出されます.
 
 
/**
	 *       
	 * 
	 * @param folder      XML  
	 * @throws Exception 
	 */
	public static void make(String folder) throws Exception{
		List<AppUser> ul = BaseDao.getDao().query(AppUser.class,Cnd.where("id", "<=", "15"),null);
		DataToXML.buildAppUserUseXBlink(folder, ul);
	}

 
ここまで書くと、あとはどうすればいいかわかるでしょう.
 
次の項目を実行します.コンソールは次のように出力されます.
 
使用XBlink操作XML_第1张图片
生成されたXMLの結果は次のとおりです.
使用XBlink操作XML_第2张图片
 
 
 
3.説明の下
1)この例ではNutzフレームも使用している
2)modelでlombokを使い、getやsetの書き方を省く
3)うまく書けないから、間に合わせてみよう