في عملي اتعامل مع ملفات xml لحفظ بعض القيم و النصوص الثابته.
وبسبب تنوع الملفات اضطريت الى تصميم هذه الحزمة.. حيث لا احتاج الى كتابك شفره خاصة لكل ملف.
فهذه الحزمة يمكنها تحويل ملف xml الى صنف جافا .. المطلوب من مستخدم هذه الحزمة انشاء javabean لملف xml فقط مع اضافة 3 طرق .
مثال على الاستخدام، بفرض ان لديك الملف التالي
<SPs version="1"> <ControlPanel> <sp funcName="CHANGE_PASSWORD" spName="CHANGE_PASSWORD" paramCount="4" desc=""/> <sp funcName="MY_INFORMATION" spName="MY_INFORMATION" paramCount="22" desc=""/> </ControlPanel> <Login> <sp funcName="LOGON" spName="LOGON" paramCount="5" desc=""/> </Login> <Lookup> <sp funcName="LK_STATUSES" spName="LK_STATUSES" paramCount="2" desc=""/> <sp funcName="LK_TYPES" spName="LK_TYPES" paramCount="2" desc=""/> </Lookup> <Test> <sp funcName="CREATE_NEW_IMAGE" spName="CREATE_NEW_IMAGE" paramCount="5" desc=""/> <sp funcName="GET_IMAGE" spName="GET_IMAGE" paramCount="5" desc=""/> </Test> </SPs>
فالكود المناسب لتحويل هذا الملف هو كالتالي
public class MyAtt extends Attribute{
/*
* b.xml
*/
private String funcName;
private String spName;
private String paramCount;
private String desc;
@Override
public String getItemByAttributeValue(){
return funcName;
}
@Override
public void setAttribute(String key, String value) throws Exception {
if("funcName".equalsIgnoreCase(key)){
this.funcName=value;
}else if("spName".equalsIgnoreCase(key)){
this.spName=value;
}else if("paramCount".equalsIgnoreCase(key)){
this.paramCount=value;
}else if("desc".equalsIgnoreCase(key)){
this.desc=value;
}
}
@Override
public String toXmlFormat() {
StringBuffer sb=new StringBuffer();
if(funcName!=null)sb.append(" funcName=\"").append(funcName).append("\"");
if(spName!=null)sb.append(" spName=\"").append(spName).append("\"");
if(paramCount!=null)sb.append(" paramCount=\"").append(paramCount).append("\"");
if(desc!=null)sb.append(" desc=\"").append(desc).append("\"");
return sb.toString();
}
@Override
public String toString() {
return toXmlFormat();
}
}اما كود القرائة و التحويل فهو كما يلي
public static void test2(){
try{
TagsSitting tags=new TagsSitting();
XMLFileToObject<MyAtt> xmlFileToObject=new XMLFileToObject<MyAtt>(tags, "/test/client/b.xml", new MyAtt(), false);
xmlFileToObject.initXMLObject();
System.out.println(xmlFileToObject.getXmlObject());
printMap(xmlFileToObject.getXmlObject().toMapByAttribute("sp"));
}catch(Exception e){
e.printStackTrace();
}
}الصنف TagsSitting يستخدم فقط اذا اردت اضافة قيود على ملف xml .(سأتكلم عنه لاحقا ).
الحزمة قابله للتطوير .. من لديه اي اقتراح او فكره للتحسين ... يسرني ان يطرحها هنا .
المرفق الحزمة بالشفره المصدريه + ملفات للتجربة

