Android Xstream

来源:互联网 发布:服务器怎么开启端口 编辑:程序博客网 时间:2024/05/21 18:46


第一次写博客,应该能看



一,什么是xstream

 

Xstream是将java对象和XML互相转换的第三方架包。

 

本文使用的xstream版本是1.4.7版本  【注:因xstream已经放入studio库中这里就不提供第三方包地址了】

 

废话不多说,代码是最好的解释:

 

MainActivityxml布局就写了一个TextView, 很是简单我这里就不写了

 

 

MainActivity

 

 

 public class MainActivityextendsAppCompatActivity {
   <TfrxReportVersion="4.9.20"DotMatrixReport="False"      IniFile="\Software\Fast Reports" >

<TfrxDataPageName="Da"Height="100"Left="0"Top="0"Width="1000"/>

<TfrxReportPageName="Page"PaperWidth="82"PaperHeight="152">

<TfrxPictureViewName="BarCode_Img"Left="146.3859"Top="46.77953"Width="79.37013"Height="79.37007874"/>

<TfrxMemoViewName="TicketWindow"

Left="94.48818898"Top="409.55362714"Width="98.26778"Height="15.11812"/>

<TfrxMemoViewName="InvaliDate

"Left="94.13213234"Top="409.78765487"Width="98.01478"Height="15.78956"/>

<TfrxMemoViewName="BarCode

"Left="94.958464854"Top="409.47865435"Width="98.78961"Height="15.15236"/>

<TfrxMemoViewName="TicketName

"Left="94.36848595"Top="409.10424427"Width="98.85485"Height="15.11021"/>

</TfrxReportPage>

 

</TfrxReport>

 

                  @Override
    protected voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView=(TextView) findViewById(R.id.tv_Data);

        
        
MyTfrxReport myReport= XmlUtils.getObject(str, MyTfrxReport.class);
        MyTfrxReportPage myPage=XmlUtils.getObject(strin,MyTfrxReportPage.class);
        String mTfrxPictureView="";
        String mTfrxMemoView="";
       for(inti=0;i<myPage.getTfrxPictureView().size();i++){

            mTfrxPictureView+=myReport.getTfrxReportPage();
        }
        for(intj=0;j<myPage.getTfrxMemoView().size();j++){
            mTfrxMemoView+=myPage.getTfrxMemoView().get(j).toString();
        }
        textView.setText(myReport.toString()+"\n"+myReport.getTfrxReportPage().toString()+"\n"+myReport.getTfrxDataPage().toString()+"\n"+
        myPage.toString()+"\n"+mTfrxMemoView+"\n"+mTfrxPictureView+"\n");

    }
}

 

 

XmlUtils.class

 

public classXmlUtils {

    public staticStringXMLHEADER="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
    private staticXStreamxstream=null;

    /**
     * 将xml解析成指定泛型并返回
     * xml转换为类(java)(对象)
     */
    
public static <T>TgetObject(String string, Class<T> clazz) {
        XStream xstream =newXStream(newDomDriver());
        xstream.processAnnotations(clazz);
        xstream.ignoreUnknownElements();
        return(T) xstream.fromXML(string);
    }

    /**
     * 将指定类变成XML型数据返回
     * 指定类(java)转换为xml
     */
    
public static <T> String getData(Object object, Class<T> cls) {
        XStream xstream =newXStream();
        xstream.processAnnotations(cls);
        xstream.ignoreUnknownElements();
        returnxstream.toXML(object);
    }

    /**
     * 特殊字符替换
     * strData String 原始字符串
     * regex String 要替换的字符串
     * replacement String 替代字符串
     * XmlUtils.replaceString(XmlUtils.getData(dataRoot, SaveDataRoot.class), "__", "_");
     */
    
public static String replaceString(String strData, String regex, String replacement) {
        if(strData ==null) {
            return null;
        }
        intindex;
        index = strData.indexOf(regex);
        String strNew ="";
        if(index >0) {
            while(index >=0) {
                strNew += strData.substring(0, index) + replacement;
                strData = strData.substring(index + regex.length());
                index = strData.indexOf(regex);
            }
            strNew += strData;
            returnstrNew;
        }
        returnstrData;
    }
    public staticString decodeString(String strData) {
        strData =replaceString(strData,"<","<");
        strData =replaceString(strData,">",">");
        strData =replaceString(strData,"'","'");
        strData =replaceString(strData,""","\"");
        strData =replaceString(strData,"&","&");

        returnstrData;
    }
}

 

 

MyTfrxDataPage.class

 

/**
 * Created by dd on 2017-08-30.
 * 因为xml数据解析时,名称区分大小写,所以特意把属性首字母大写,特此声明
 */
@XStreamAlias("TfrxDataPage")
public classMyTfrxDataPage {
    @XStreamAsAttribute
    privateStringName;
    @XStreamAsAttribute
    StringHeight;
    @XStreamAsAttribute
    StringLeft;
    @XStreamAsAttribute
    StringTop;
    @XStreamAsAttribute
    StringWidth;

    publicString getName() {
        returnName;
    }

    public voidsetName(String name) {
        Name= name;
    }

    publicString getHeight() {
        returnHeight;
    }

    public voidsetHeight(String height) {
        Height= height;
    }

    publicString getLeft() {
        returnLeft;
    }

    public voidsetLeft(String left) {
        Left= left;
    }

    publicString getTop() {
        returnTop;
    }

    public voidsetTop(String top) {
        Top= top;
    }

    publicString getWidth() {
        returnWidth;
    }

    public voidsetWidth(String width) {
        Width= width;
    }
}

 

 

 

MyTfrxMemoView.class

 

/**
 * Created by dd on 2017-08-30.
 * 因为xml数据解析时,名称区分大小写,所以特意把属性首字母大写,特此声明
 */
@XStreamAlias("TfrxMemoView")
public classMyTfrxMemoView {
    @XStreamAsAttribute
   privateStringName;
    @XStreamAsAttribute
    StringLeft;
    @XStreamAsAttribute
    StringTop;
    @XStreamAsAttribute
    StringWidth;
    @XStreamAsAttribute
    StringHeight;
    
    publicString getName() {
        returnName;
    }

    public voidsetName(String name) {
        Name= name;
    }

    publicString getLeft() {
        returnLeft;
    }

    public voidsetLeft(String left) {
        Left= left;
    }

    publicString getTop() {
        returnTop;
    }

    public voidsetTop(String top) {
        Top= top;
    }

    publicString getWidth() {
        returnWidth;
    }

    public voidsetWidth(String width) {
        Width= width;
    }

    publicString getHeight() {
        returnHeight;
    }

    public voidsetHeight(String height) {
        Height= height;
    }
   
}

 

MyTfrxPictureView.class

/**
 * Created by dd on 2017-08-30.
 * 因为xml数据解析时,名称区分大小写,所以特意把属性首字母大写,特此声明
 */
@XStreamAlias("TfrxPictureView")
public classMyTfrxPictureView {
    @XStreamAsAttribute
    StringName;
    @XStreamAsAttribute
    StringLeft;
    @XStreamAsAttribute
    StringTop;
    @XStreamAsAttribute
    StringWidth;
    @XStreamAsAttribute
    StringHeight;
   
    publicString getName() {
        returnName;
    }

    public voidsetName(String name) {
        Name= name;
    }

    publicString getLeft() {
        returnLeft;
    }

    public voidsetLeft(String left) {
        Left= left;
    }

    publicString getTop() {
        returnTop;
    }

    public voidsetTop(String top) {
        Top= top;
    }

    publicString getWidth() {
        returnWidth;
    }

    public voidsetWidth(String width) {
        Width= width;
    }

    publicString getHeight() {
        returnHeight;
    }

    public voidsetHeight(String height) {
        Height= height;
    }
        }

 

MyTfrxReport.class

 

public classMyTfrxReport {
    /*@XStreamImplicit(itemFieldName="TfrxReportPage")
    private List<MyTfrxReportPage> TfrxReportPage;*/
   // private MyTfrxDataPage TfrxDataPage;
    
@XStreamImplicit(itemFieldName = "TfrxDataPage")
    privateList<MyTfrxDataPage>TfrxDataPage;
    @XStreamImplicit(itemFieldName = "TfrxReportPage")
    privateList<MyTfrxReportPage>TfrxReportPage;
    @XStreamAsAttribute
    privateStringVersion;
    @XStreamAsAttribute
    privateStringDotMatrixReport;
    @XStreamAsAttribute
    StringIniFile;
   
    publicList<MyTfrxDataPage> getTfrxDataPage() {
        returnTfrxDataPage;
    }

    public voidsetTfrxDataPage(List<MyTfrxDataPage> tfrxDataPage) {
        TfrxDataPage= tfrxDataPage;
    }

    publicList<MyTfrxReportPage> getTfrxReportPage() {
        returnTfrxReportPage;
    }

    public voidsetTfrxReportPage(List<MyTfrxReportPage> tfrxReportPage)  {
        TfrxReportPage= tfrxReportPage;
    }

    publicString getVersion() {
        returnVersion;
    }

    public voidsetVersion(String version) {
        Version= version;
    }

    publicString getDotMatrixReport() {
        returnDotMatrixReport;
    }

    public voidsetDotMatrixReport(String dotMatrixReport) {
        DotMatrixReport= dotMatrixReport;
    }

    publicString getIniFile() {
        returnIniFile;
    }

    public voidsetIniFile(String iniFile) {
        IniFile= iniFile;
    }
}

 

MyTfrxReportPage.class

 

/**
 * Created by dd on 2017-08-30.
 * 因为xml数据解析时,名称区分大小写,所以特意把 属性 首字母大写,特此声明
 */
@XStreamAlias("TfrxReportPage")

public classMyTfrxReportPage {

@XStreamImplicit(itemFieldName = "TfrxMemoView")
privateList<MyTfrxMemoView>TfrxMemoView;
@XStreamImplicit(itemFieldName ="TfrxPictureView")
privateList<MyTfrxPictureView>TfrxPictureView;
@XStreamAsAttribute
private  StringName;
@XStreamAsAttribute
StringPaperWidth;
@XStreamAsAttribute
StringPaperHeight;

publicString getName() {
    returnName;
}

public voidsetName(String name) {
    Name= name;
}

publicString getPaperWidth() {
    returnPaperWidth;
}

public voidsetPaperWidth(String paperWidth) {
    PaperWidth= paperWidth;
}

publicString getPaperHeight() {
    returnPaperHeight;
}

public voidsetPaperHeight(String paperHeight) {
    PaperHeight= paperHeight;
}

publicList<MyTfrxMemoView> getTfrxMemoView() {
    returnTfrxMemoView;
}

public voidsetTfrxMemoView(List<MyTfrxMemoView> tfrxMemoView) {
    TfrxMemoView= tfrxMemoView;
}

publicList<MyTfrxPictureView> getTfrxPictureView() {
    returnTfrxPictureView;
}

public voidsetTfrxPictureView(List<MyTfrxPictureView> tfrxPictureView) {
    TfrxPictureView= tfrxPictureView;
}

 

}

 

Person.class
/**
 * Created by dd on 2017-08-30.
 */
@XStreamAlias("per")
public classPerson {
    privateStringname;
    privateStringid;
    privateStringsex;

    publicString getName() {
        returnname;
    }

    public voidsetName(String name) {
        this.name= name;
    }

    publicString getId() {
        returnid;
    }

    public voidsetId(String id) {
        this.id= id;
    }

    publicString getSex() {
        returnsex;
    }

    public voidsetSex(String sex) {
        this.sex= sex;
    }
}

Tfrx.class

/**
 * Created by dd on 2017-08-31.
 */
@XStreamAlias("TfrxReport")
public classTfrx {
    
Stringversion;
    StringdotMatrixReport;
    publicString getVersion() {
        returnversion;
    }

    public voidsetVersion(String version) {
        this.version= version;
    }

    publicString getDotMatrixReport() {
        returndotMatrixReport;
    }

    public voidsetDotMatrixReport(String dotMatrixReport) {
        this.dotMatrixReport= dotMatrixReport;
    }

}

User.class

@XStreamAlias("user")
public classUser {
    @XStreamAsAttribute
    privateStringversion;
    @XStreamAsAttribute
    privateStringid;
    @XStreamAsAttribute
    privateStringpage;
    privateStringage;
    privateStringsex;
    @XStreamAsAttribute
    privateStringleft;
    @XStreamAsAttribute
    privateStringbottom;


    publicString getLeft() {
        returnleft;
    }

    public voidsetLeft(String left) {
        this.left= left;
    }

    publicString getBottom() {
        returnbottom;
    }

    public voidsetBottom(String bottom) {
        this.bottom= bottom;
    }

    publicString getPage() {
        returnpage;
    }

    public voidsetPage(String page) {
        this.page= page;
    }

    publicString getVersion() {
        returnversion;
    }

    public voidsetVersion(String version) {
        this.version= version;
    }

    publicString getId() {
        returnid;
    }

    public voidsetId(String id) {
        this.id= id;
    }

    publicString getAge() {
        returnage;
    }

    public voidsetAge(String age) {
        this.age= age;
    }

    publicString getSex() {
        returnsex;
    }

    public voidsetSex(String sex) {
        this.sex= sex;
    }
    }

Users.class

 

 

@XStreamAlias("users")
public classUsers {
    @XStreamImplicit(itemFieldName="user")
    privateList<User>user;
    @XStreamAsAttribute
    privateStringid;

    publicString getId() {
        returnid;
    }

    public voidsetId(String id) {
        this.id= id;
    }

    publicList<User> getUser() {
        returnuser;
    }

    public voidsetUser(List<User> user) {
        this.user= user;
    }

    @Override
    publicString toString() {
        return"Users["+id+"[user="+user+"]";
    }
}