자바 반사 체 제 를 이용 하여 xml 를 맞 춥 니 다.
10947 단어 Java파일 읽 기와 쓰기 xml
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.junit.Test;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class XMLUtilTest {
@Test
public void testXML(){
Bean bean = new Bean();
bean.setUsrname(" ");
bean.setAge("25");
bean.setCerNo("360402");
bean.setGender(" ");
bean.setMobileno("1888888");
bean.setExter("");
String strXml = bean.makeXml();
System.out.println(strXml);
}
@Test
public void testToBean() throws Exception {
Bean bean = new Bean();
String xml = "
" +
"
" +
"
" +
" 25
" +
" 360402
" +
" 1888888
" +
"
" +
"";
bean.toBean(xml);
System.out.println(bean);
/**Bean{usrname=' ', age='25', cerNo='360402', mobileno='1888888', gender=' ', exter='null'}*/
}
}
class Base{
public String makeXml(){
String result = "";
Class clazz = this.getClass();
Field[] fileds = clazz.getDeclaredFields();//
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("SENF_MSG");
for (Field filed : fileds){
String paramName = filed.getName();
String methodName = "get" + paramName.substring(0, 1).toUpperCase() + paramName.substring(1);
try {
// public
Method getMethod = clazz.getMethod(methodName);
String paramVal = getMethod.invoke(this).toString();
if(!paramVal.equals("")&¶mVal!=null){
Element empName = rootElement.addElement(paramName);
empName.setText(paramVal);
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
result = document.asXML();
return result;
}
/**
* xml bean
* @param xmlStr
* @return
* @throws Exception
*/
public Base toBean(String xmlStr) throws Exception{
Class clazz = this.getClass();
Field[] fileds = clazz.getDeclaredFields();
Document document = DocumentHelper.parseText(xmlStr);
Element root = document.getRootElement();
List rootList = root.elements();
for (int i=0;i"set" + paramName.substring(0, 1).toUpperCase() + paramName.substring(1);
Method setMethod = null;
setMethod = clazz.getMethod(methodName,String.class);
setMethod.invoke(this,paramVal);
}
return this;
}
}
class Bean extends Base{
private String usrname;
private String age;
private String cerNo;
private String mobileno;
private String gender;
private String exter;
public String getUsrname() {
return usrname;
}
public void setUsrname(String usrname) {
this.usrname = usrname;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getCerNo() {
return cerNo;
}
public void setCerNo(String cerNo) {
this.cerNo = cerNo;
}
public String getMobileno() {
return mobileno;
}
public void setMobileno(String mobileno) {
this.mobileno = mobileno;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getExter() {
return exter;
}
public void setExter(String exter) {
this.exter = exter;
}
@Override
public String toString() {
return "Bean{" +
"usrname='" + usrname + '\'' +
", age='" + age + '\'' +
", cerNo='" + cerNo + '\'' +
", mobileno='" + mobileno + '\'' +
", gender='" + gender + '\'' +
", exter='" + exter + '\'' +
'}';
}
}
실행 결과:
<SENF_MSG><usrname> usrname><age>25age><cerNo>360402cerNo><mobileno>1888888mobileno><gender> gender>SENF_MSG>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.