解析XML方法很多,XStream是比较简洁的
1、把Java类转成XML
import com.thoughtworks.xstream.XStream;
public class ErrorCode {
private int errorCode;
public ErrorCode(int ecode,String msg) {
this.errorCode = ecode;
this.errorMsg = msg;
}
public int getErrorCode() {
return errorCode;
}
public void setErrorCode(int errorCode) {
this.errorCode = errorCode;
}
private String errorMsg;
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public String toXmlString() {
XStream xstream = new XStream();
xstream.alias("result", ErrorCode.class);
return "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"+xstream.toXML(this);
}
}
2、把XML转成Java类
public ErrorCode toObj(String xml){
XStream xstream = new XStream();
xstream.alias("result", ErrorCode.class);
return (ErrorCode)xstream.fromXML(xml);
}
3、复杂的,需要转换xml节点名称和类名称的,需要使用Java的注释功能
import java.util.List;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias("indicatorValueElements")
public class IndicatorValueElements{
@XStreamImplicit(itemFieldName="indicatorValue")
private List<IndicatorValue> elements;
public List<IndicatorValue> getElements() {
return elements;
}
public void setElements(List<IndicatorValue> elements) {
this.elements = elements;
}
public static IndicatorValueElements valueOf(String xmlStr){
XStream xstream = new XStream();
xstream.alias("indicatorValueElements", IndicatorValueElements.class);
xstream.autodetectAnnotations(true);
return (IndicatorValueElements)xstream.fromXML(xmlStr);
}
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<indicatorValueElements>
<indicatorValue>
<dateString>2000-12</dateString><value>2727.96</value>
</indicatorValue>
</indicatorValueElements>
@XStreamAlias("indicatorValue")
public class IndicatorValue implements Comparable<IndicatorValue>{
private String dateString;
private String value;
public String getDateString() {
return dateString;
}
public void setDateString(String dateString) {
this.dateString = dateString;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public int compareTo(IndicatorValue o) {
// TODO Auto-generated method stub
return this.getDateString().compareTo(o.getDateString());
}
}