在用jdk自带的JAXB和xstream解析xml的时候,如果遇到这样的元素。转为对象后,变成new Object();
能否通过什么方式,让他变为null.
@XStreamAlias("root")
public class RootBean {
@XStreamAlias("DocInfo")
private DocInfoBean docInfo;
@XStreamAlias("PAGES")
private List<PageBean> pages;
public DocInfoBean getDocInfo() {
return docInfo;
}
public void setDocInfo(DocInfoBean docInfo) {
this.docInfo = docInfo;
}
public List<PageBean> getPages() {
return pages;
}
public void setPages(List<PageBean> pages) {
this.pages = pages;
}
//getter和setter
}
public class DocInfoBean {
@XStreamAlias("APP_CODE")
private String appCode;
@XStreamAlias("APP_NAME")
private String appName;
@XStreamAlias("BUSI_NO")
private String busiNo;
//getter和setter
...
}
@XStreamAlias("PAGE")
public class PageBean {
@XStreamAlias("DOC_TYPE")
@XStreamAsAttribute
private String docType;
@XStreamAlias("DOC_NAME")
@XStreamAsAttribute
private String docName;
@XStreamAlias("PAGE_URL")
@XStreamAsAttribute
private String pageUrl;
@XStreamAlias("PAGE_NAME")
@XStreamAsAttribute
private String pageName;
@XStreamAlias("UP_USER")
@XStreamAsAttribute
private String upUser;
@XStreamAlias("UP_ORG")
@XStreamAsAttribute
private String upOrg;
@XStreamAlias("UP_TIME")
@XStreamAsAttribute
private String upTime;
//getter和setter
}
解析方法:
private static RootBean getRootBean(String xml) {
InputStreamReader reader = null;
XStream xStream=new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));
xStream.alias("root", RootBean.class);
xStream.autodetectAnnotations(true);
return (RootBean) xStream.fromXML(xml);
}
需要解析的xml为:
<root>
<DocInfo/>
<PAGES>
<PAGE DOC_TYPE="010" DOC_NAME="身份证" PAGE_URL="1111.jpg" PAGE_NAME="0000.jpg" UP_USER="12433124" UP_ORG="惠普" UP_TIME="34543312321"/>
<PAGE DOC_TYPE="010" DOC_NAME="身份证" PAGE_URL="1111.jpg" PAGE_NAME="0000.jpg" UP_USER="12433124" UP_ORG="惠普" UP_TIME="34543312321"/>
<PAGE DOC_TYPE="010" DOC_NAME="身份证" PAGE_URL="1111.jpg" PAGE_NAME="0000.jpg" UP_USER="12433124" UP_ORG="惠普" UP_TIME="34543312321"/>
</PAGES>
</root>