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