第一次写博客,应该能看
一,什么是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+"]";
}
}