Android Xstream



第一次写博客,应该能看

 

 

一,什么是xstream

 

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

 

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

 

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

 

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

 

 

MainActivity

 

 

 public class MainActivity extends AppCompatActivity {
   

















 



 

                  @Override
    protected void onCreate(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 (int i=0;i

XmlUtils.class

 

public class XmlUtils {

    public static String XMLHEADER = "";
    private static XStream xstream = null;

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

    /**
     * 将指定类变成XML型数据返回
     * 指定类(java)转换为xml
     */
    public static  String getData(Object object, Class cls) {
        XStream xstream = new XStream();
        xstream.processAnnotations(cls);
        xstream.ignoreUnknownElements();
        return xstream.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;
        }
        int index;
        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;
            return strNew;
        }
        return strData;
    }
    public static String decodeString(String strData) {
        strData = replaceString(strData, "<", "<");
        strData = replaceString(strData, ">", ">");
        strData = replaceString(strData, "'", "'");
        strData = replaceString(strData, """, "\"");
        strData = replaceString(strData, "&", "&");

        return strData;
    }
}

 

 

MyTfrxDataPage.class

 

 

 

/**
 * Created by dd on 2017-08-30.
 * 因为xml数据解析时,名称区分大小写,所以特意把属性首字母大写,特此声明
 */
@XStreamAlias("TfrxDataPage")
public class MyTfrxDataPage {
    @XStreamAsAttribute
    private String Name;
    @XStreamAsAttribute
    String Height;
    @XStreamAsAttribute
    String Left;
    @XStreamAsAttribute
    String Top;
    @XStreamAsAttribute
    String Width;

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getHeight() {
        return Height;
    }

    public void setHeight(String height) {
        Height = height;
    }

    public String getLeft() {
        return Left;
    }

    public void setLeft(String left) {
        Left = left;
    }

    public String getTop() {
        return Top;
    }

    public void setTop(String top) {
        Top = top;
    }

    public String getWidth() {
        return Width;
    }

    public void setWidth(String width) {
        Width = width;
    }
}

 

 

MyTfrxMemoView.class

 

/**
 * Created by dd on 2017-08-30.
 * 因为xml数据解析时,名称区分大小写,所以特意把属性首字母大写,特此声明
 */
@XStreamAlias("TfrxMemoView")
public class MyTfrxMemoView {
    @XStreamAsAttribute
   private String Name;
    @XStreamAsAttribute
    String Left;
    @XStreamAsAttribute
    String Top;
    @XStreamAsAttribute
    String Width;
    @XStreamAsAttribute
    String Height;
    
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getLeft() {
        return Left;
    }

    public void setLeft(String left) {
        Left = left;
    }

    public String getTop() {
        return Top;
    }

    public void setTop(String top) {
        Top = top;
    }

    public String getWidth() {
        return Width;
    }

    public void setWidth(String width) {
        Width = width;
    }

    public String getHeight() {
        return Height;
    }

    public void setHeight(String height) {
        Height = height;
    }
   
}

 

MyTfrxPictureView .class

/**
 * Created by dd on 2017-08-30.
 * 因为xml数据解析时,名称区分大小写,所以特意把属性首字母大写,特此声明
 */
@XStreamAlias("TfrxPictureView")
public class MyTfrxPictureView {
    @XStreamAsAttribute
    String Name;
    @XStreamAsAttribute
    String Left;
    @XStreamAsAttribute
    String Top;
    @XStreamAsAttribute
    String Width;
    @XStreamAsAttribute
    String Height;
   
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getLeft() {
        return Left;
    }

    public void setLeft(String left) {
        Left = left;
    }

    public String getTop() {
        return Top;
    }

    public void setTop(String top) {
        Top = top;
    }

    public String getWidth() {
        return Width;
    }

    public void setWidth(String width) {
        Width = width;
    }

    public String getHeight() {
        return Height;
    }

    public void setHeight(String height) {
        Height = height;
    }
        }

 

MyTfrxReport.class

 

public class MyTfrxReport {
    /*@XStreamImplicit(itemFieldName="TfrxReportPage")
    private List TfrxReportPage;*/
   // private MyTfrxDataPage TfrxDataPage;
    @XStreamImplicit(itemFieldName = "TfrxDataPage")
    private List TfrxDataPage;
    @XStreamImplicit(itemFieldName = "TfrxReportPage")
    private List TfrxReportPage;
    @XStreamAsAttribute
    private String Version;
    @XStreamAsAttribute
    private String DotMatrixReport;
    @XStreamAsAttribute
    String IniFile;
   
    public List getTfrxDataPage() {
        return TfrxDataPage;
    }

    public void setTfrxDataPage(List tfrxDataPage) {
        TfrxDataPage = tfrxDataPage;
    }

    public List getTfrxReportPage() {
        return TfrxReportPage;
    }

    public void setTfrxReportPage(List tfrxReportPage)   {
        TfrxReportPage = tfrxReportPage;
    }

    public String getVersion() {
        return Version;
    }

    public void setVersion(String version) {
        Version = version;
    }

    public String getDotMatrixReport() {
        return DotMatrixReport;
    }

    public void setDotMatrixReport(String dotMatrixReport) {
        DotMatrixReport = dotMatrixReport;
    }

    public String getIniFile() {
        return IniFile;
    }

    public void setIniFile(String iniFile) {
        IniFile = iniFile;
    }
}

 

MyTfrxReportPage.class

 

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

public class MyTfrxReportPage {

@XStreamImplicit(itemFieldName = "TfrxMemoView")
private List TfrxMemoView;
@XStreamImplicit(itemFieldName = "TfrxPictureView")
private List TfrxPictureView;
@XStreamAsAttribute
private  String Name;
@XStreamAsAttribute
String PaperWidth;
@XStreamAsAttribute
String PaperHeight;

public String getName() {
    return Name;
}

public void setName(String name) {
    Name = name;
}

public String getPaperWidth() {
    return PaperWidth;
}

public void setPaperWidth(String paperWidth) {
    PaperWidth = paperWidth;
}

public String getPaperHeight() {
    return PaperHeight;
}

public void setPaperHeight(String paperHeight) {
    PaperHeight = paperHeight;
}

public List getTfrxMemoView() {
    return TfrxMemoView;
}

public void setTfrxMemoView(List tfrxMemoView) {
    TfrxMemoView = tfrxMemoView;
}

public List getTfrxPictureView() {
    return TfrxPictureView;
}

public void setTfrxPictureView(List tfrxPictureView) {
    TfrxPictureView = tfrxPictureView;
}

 

}

 

Person.class

/**
 * Created by dd on 2017-08-30.
 */
@XStreamAlias("per")
public class Person {
    private String name;
    private String id;
    private String sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

Tfrx .class

/**
 * Created by dd on 2017-08-31.
 */
@XStreamAlias("TfrxReport")
public class Tfrx {
    String version;
    String dotMatrixReport;
    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getDotMatrixReport() {
        return dotMatrixReport;
    }

    public void setDotMatrixReport(String dotMatrixReport) {
        this.dotMatrixReport = dotMatrixReport;
    }

}

User.class

@XStreamAlias("user")
public class User {
    @XStreamAsAttribute
    private String version;
    @XStreamAsAttribute
    private String id;
    @XStreamAsAttribute
    private String page;
    private String age;
    private String sex;
    @XStreamAsAttribute
    private String left;
    @XStreamAsAttribute
    private String bottom;


    public String getLeft() {
        return left;
    }

    public void setLeft(String left) {
        this.left = left;
    }

    public String getBottom() {
        return bottom;
    }

    public void setBottom(String bottom) {
        this.bottom = bottom;
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    }

Users.class

 

 

@XStreamAlias("users")
public class Users {
    @XStreamImplicit(itemFieldName="user")
    private List user;
    @XStreamAsAttribute
    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public List getUser() {
        return user;
    }

    public void setUser(List user) {
        this.user = user;
    }

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

 

 

 

 

 

你可能感兴趣的:(Android+Xstream)