Cindy_Lee 发表于 2013-2-4 23:23:09

做了个xml小工具

因为需要在android手机上面解析xml,而现有的xml库大多都比较大,而且我需要的功能也比较少,所以就自己实现了一个。同时也熟悉了一下注解的运用,这个工具就只有两个功能:
1.将javabean转换成String类型的对象以便网络传输
2.将String类型对象转换成javabean以便操作方便
所有代码只有4个类,代码我就不贴了,发一下测试代码,想研究的可以下载来看看
 
package test;import java.util.ArrayList;import cn.infogiga.util.xml.XMLBean;import cn.infogiga.util.xml.XMLElement;import cn.infogiga.util.xml.XMLField;import cn.infogiga.util.xml.XMLTypes;/** * value表示这个节点名称 type=XMLTypes.XML_ROOT表示这是根节点 * 如果不是根节点 输出的xml没有xml头:<?xml version='1.0' encoding='UTF-8'?> * @author cindy */@XMLElement(value="BeanA",type=XMLTypes.XML_ROOT)public class BeanA extends XMLBean{/** * value表示节点名称,XMLTypes.XML_ELEMENT表示这是普通节点 */@XMLField(value="Field1",xmlType=XMLTypes.XML_ELEMENT)private String flied1;@XMLField(value="Field2",xmlType=XMLTypes.XML_ELEMENT)private String fleld2;@XMLField(value="Field3",xmlType=XMLTypes.XML_ELEMENT)private String field3;/** * xmlType=XMLTypes.XML_LIST表示这是多个重复节点,这里一定要是ArrayList 如果是List则会报错 * 如果xmlType=XMLTypes.XML_LIST 那么mClass=BeanB.class 这个一定要添加,初始化是需要用到,没有什么意义 * 如果value="beanBs"省略则输出的xml将会有变化: * 有value="beanBs"输出的字符串: * <?xml version='1.0' encoding='UTF-8'?><BeanA>                <Field1>111111</Field1>                <Field2>222222</Field2>                <beanBs>             <BeanB>         <Field1>b33333</Field1>             </BeanB>             <BeanB>         <Field1>b44444</Field1>             </BeanB>               </beanBs>               </BeanA>*没有value="beanBs"输出的字符串:<?xml version='1.0' encoding='UTF-8'?><BeanA><Field1>111111</Field1><Field2>222222</Field2><Field3>333333</Field3><BeanB><str2>b33333</str2></BeanB><BeanB><str2>b44444</str2></BeanB></BeanA> */@XMLField(value="beanBs",xmlType=XMLTypes.XML_LIST,mClass=BeanB.class)private ArrayList<BeanB> beanBs;public ArrayList<BeanB> getBeanBs() {return beanBs;}public void setBeanBs(ArrayList<BeanB> beanBs) {this.beanBs = beanBs;}public String getFlied1() {return flied1;}public void setFlied1(String flied1) {this.flied1 = flied1;}public String getFleld2() {return fleld2;}public void setFleld2(String fleld2) {this.fleld2 = fleld2;}public String getField3() {return field3;}public void setField3(String field3) {this.field3 = field3;}}  
 
 
package test;import cn.infogiga.util.xml.XMLBean;import cn.infogiga.util.xml.XMLElement;import cn.infogiga.util.xml.XMLField;import cn.infogiga.util.xml.XMLTypes;@XMLElement(value="BeanB",type=XMLTypes.XML_UNROOT)public class BeanB extends XMLBean{@XMLField(value="str2",xmlType=XMLTypes.XML_ELEMENT)private String str2;public String getStr2() {return str2;}public void setStr2(String str2) {this.str2 = str2;}} 
 
 
 
package test;import java.util.ArrayList;import java.util.List;public class TestMain2 {/** * @param args */public static void main(String[] args) {BeanA ba = new BeanA();ba.setFlied1("111111");ba.setFleld2("222222");ba.setField3("333333");ArrayList<BeanB> bList = new ArrayList<BeanB>();BeanB b = new BeanB();b.setStr2("b33333");bList.add(b);BeanB c = new BeanB();c.setStr2("b44444");bList.add(c);ba.setBeanBs(bList);System.out.println(ba.toString());}} 
 
 
package test;import java.util.ArrayList;public class TestMain3 {/** * @param args */public static void main(String[] args) {/*// TODO Auto-generated method stubBeanA beanA = new BeanA();beanA.getBeanBs().getClass();*/String xml = "<?xml version='1.0' encoding='UTF-8'?><BeanA><Field1>111111</Field1><Field2>222222</Field2><Field3>333333</Field3><beanBs><BeanB><str2>b33333</str2></BeanB><BeanB><str2>b44444</str2></BeanB></beanBs></BeanA>";BeanA beanA = new BeanA();try {beanA.parse(xml);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(beanA.getFlied1());System.out.println(beanA.getFleld2());System.out.println(beanA.getField3());ArrayList<BeanB> l = beanA.getBeanBs();if(l != null){for(int i=0;i<l.size();i++){BeanB b = l.get(i);System.out.println(b.getStr2());}}}} 添加了点简单的注释
页: [1]
查看完整版本: 做了个xml小工具