通过java反射机制获取节点,将节点里面的内容存到PO对象中,然后进行数据的增删改查
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.input.sax.XMLReaderSAX2Factory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.highershine.gdna2.entity.po.background.RelativeRelation;
import com.highershine.gdna2.utils.DateTools;
/**
* <p>“亲缘关系” xml文件(FMQ)解析器</p>
*
*
* @author sped
*
*/
public class RelativeRelationXmlParser {
final Logger log = LoggerFactory.getLogger(getClass());
/**
*
* @param xml文件路径
* @return
* List<RelativeRelation> 亲缘关系列表
* @throws
* 文件解析异常
*/
public static List<RelativeRelation> parseRelativeRelationXmlFile(File xmlFile) {
InputStream xmlFileStream=null;
List<RelativeRelation> rrList=null;
RelativeRelation rr=null;
try {
rrList=new ArrayList<RelativeRelation>();
xmlFileStream=new FileInputStream(xmlFile);
SAXBuilder builder=new SAXBuilder(new XMLReaderSAX2Factory(false));
Document document=builder.build(xmlFileStream);
Element root=document.getRootElement();
List<Element> rrElementList=root.getChildren();
for (int i = 0,size=rrElementList.size(); i < size; i++) {
List<Element> rrElements=rrElementList.get(i).getChildren();
for (Element element : rrElements) {
Class<?> rrClz=Class.forName("com.highershine.gdna2.entity.po.background.RelativeRelation");
rr=(RelativeRelation)rrClz.newInstance();
Field field=rrClz.getDeclaredField(element.getName());
field.setAccessible(true);
if ("java.util.Date".equals(field.getType().getName())) {
field.set(rr, DateTools.stringToDate(element.getTextTrim()));
} else {
field.set(rr, element.getTextTrim());
}
}
rrList.add(i, rr);
}
} catch (Exception e) {
e.printStackTrace();
}
return rrList;
}
}
对应的PO对象:
import java.util.Date;
import com.highershine.gdna2.entity.query.BaseEntity;
public class RelativeRelation extends BaseEntity {
protected String id; // ID
protected String initServerNo; // 原始服务器编号
protected String labId; // 实验室ID
protected String relationCategory; // 亲属关系类型(是否经确认的)
protected String relationType; // 亲属关系(父-母,配偶-子女等)
protected String relative1Id; // 亲属1ID
protected String relative2Id; // 亲属2ID
protected String seekingPersonId; // 被寻人员ID
protected String transferFlag; // 上报标识
protected String transferUser; // 上报人
protected Date transferDate; // 上报时间
protected String deleteFlag; // 删除标识
protected String remark; // 备注
protected String createUser; // 创建人
protected Date createDate; // 创建时间
protected String updateUser; // 更新人
protected Date updateDate; // 更新时间
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getInitServerNo() {
return initServerNo;
}
public void setInitServerNo(String initServerNo) {
this.initServerNo = initServerNo;
}
public String getLabId() {
return labId;
}
public void setLabId(String labId) {
this.labId = labId;
}
public String getRelationCategory() {
return relationCategory;
}
public void setRelationCategory(String relationCategory) {
this.relationCategory = relationCategory;
}
public String getRelationType() {
return relationType;
}
public void setRelationType(String relationType) {
this.relationType = relationType;
}
public String getRelative1Id() {
return relative1Id;
}
public void setRelative1Id(String relative1Id) {
this.relative1Id = relative1Id;
}
public String getRelative2Id() {
return relative2Id;
}
public void setRelative2Id(String relative2Id) {
this.relative2Id = relative2Id;
}
public String getSeekingPersonId() {
return seekingPersonId;
}
public void setSeekingPersonId(String seekingPersonId) {
this.seekingPersonId = seekingPersonId;
}
public String getTransferFlag() {
return transferFlag;
}
public void setTransferFlag(String transferFlag) {
this.transferFlag = transferFlag;
}
public String getTransferUser() {
return transferUser;
}
public void setTransferUser(String transferUser) {
this.transferUser = transferUser;
}
public Date getTransferDate() {
return transferDate;
}
public void setTransferDate(Date transferDate) {
this.transferDate = transferDate;
}
public String getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(String deleteFlag) {
this.deleteFlag = deleteFlag;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public String getUpdateUser() {
return updateUser;
}
public void setUpdateUser(String updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
}
对应的XML文件回去数据的节点要和PO对象的属性一直 如:
<?xml version="1.0" encoding="UTF-8" ?>
<relativeRelationList>
<relativeRelation>
<id>no001</id>
<initServerNo></initServerNo>
<labId></labId>
<relationCategory></relationCategory>
<relationType></relationType>
<relative1Id></relative1Id>
<relative2Id></relative2Id>
<seekingPersonId></seekingPersonId>
<transferFlag></transferFlag>
<transferUser></transferUser>
<transferDate></transferDate>
<deleteFlag></deleteFlag>
<remark></remark>
<createUser></createUser>
<createDate></createDate>
<updateUser></updateUser>
<updateDate></updateDate>
</relativeRelation>
<relativeRelation>
<id>no002</id>
<initServerNo></initServerNo>
<labId></labId>
<relationCategory></relationCategory>
<relationType></relationType>
<relative1Id></relative1Id>
<relative2Id></relative2Id>
<seekingPersonId></seekingPersonId>
<transferFlag></transferFlag>
<transferUser></transferUser>
<transferDate></transferDate>
<deleteFlag></deleteFlag>
<remark></remark>
<createUser></createUser>
<createDate></createDate>
<updateUser></updateUser>
<updateDate></updateDate>
</relativeRelation>
</relativeRelationList>