xpath从根下获取xml文件,转换成实体对象

1 篇文章 0 订阅
1 篇文章 0 订阅


import java.io.StringReader;


import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;


import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;


public class xPathToObj {
public static Object xmlToObject(Class c,String xml,Object... objs){
Object obj = null;
JAXBContext context = null;
Unmarshaller unmarshaller = null;
try{
context = JAXBContext.newInstance(c);
    unmarshaller = context.createUnmarshaller();
    
       DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
       domFactory.setNamespaceAware(false);//不解析命名空间
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
//Document document = builder.parse("xml/CaregAppRoot.xml");
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expression = xpath.compile("//Root");
NodeList result = (NodeList) expression.evaluate(document,
XPathConstants.NODESET);
        
        obj = unmarshaller.unmarshal(result.item(0));
        
        
}catch(JAXBException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}  
return obj;
}

private static String getXml() {
String xml="<string><Root><RegApp><CustomerName>aaa</CustomerName></RegApp></Root></string>";
return xml;
}
public static void main(String[] args) {
CaRegAppRoot t=(CaRegAppRoot)xmlToObject(CaRegAppRoot.class,getXml());
System.out.println(t.getCaRegAppList().get(0).getCustomername());
}

}




@XmlRootElement(name="Root")
@XmlAccessorType(XmlAccessType.FIELD)
public class CaRegAppRoot {
@XmlElement(name="RegApp")
private List<CaRegApp> caRegAppList;


public List<CaRegApp> getCaRegAppList() {
return caRegAppList;
}


public void setCaRegAppList(List<CaRegApp> caRegAppList) {
this.caRegAppList = caRegAppList;
}

}


@XmlAccessorType(XmlAccessType.FIELD)
public class CaRegApp {
    /**
     * 用户ID
     */
@XmlTransient
    private String userid;


    /**
     * 客户名称
     */
@XmlElement(name="CustomerName")
    private String customername;


    /**
     * 证书受理ID
     */
@XmlElement(name="CertID")
    private String certid;


    /**
     * 证书序列号
     */
@XmlElement(name="SerialNumber")
    private String serialnumber;


    /**
     * 应用方的客户编号
     */
@XmlElement(name="ExtendInfo")
    private ExtendInfo extendinfo;


    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    /**
     * 应用有效期限
     */
    @XmlElement(name="EndDate")
    @XmlJavaTypeAdapter(XmlDateAdapter.class)
    private Date enddate;


    /**
     * 证书应用服务状态
     */
    @XmlElement(name="Status")
    private String status;


    /**
     * 应用类型
     */
    @XmlElement(name="IssumType")
    private String issumtype;


    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    /**
     * 创建时间
     */
    @XmlTransient
    private Date cjsj;


    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    /**
     * 最后修改时间
     */
    @XmlTransient
    private Date zhxgsj;


    public String getUserid() {
        return userid;
    }


    public void setUserid(String userid) {
        this.userid = userid == null ? null : userid.trim();
    }


    public String getCustomername() {
        return customername;
    }


    public void setCustomername(String customername) {
        this.customername = customername == null ? null : customername.trim();
    }


    public String getCertid() {
        return certid;
    }


    public void setCertid(String certid) {
        this.certid = certid == null ? null : certid.trim();
    }


    public String getSerialnumber() {
        return serialnumber;
    }


    public void setSerialnumber(String serialnumber) {
        this.serialnumber = serialnumber == null ? null : serialnumber.trim();
    }


    public ExtendInfo getExtendinfo() {
return extendinfo;
}


public void setExtendinfo(ExtendInfo extendinfo) {
this.extendinfo = extendinfo;
}


public Date getEnddate() {
        return enddate;
    }


    public void setEnddate(Date enddate) {
        this.enddate = enddate;
    }


    public String getStatus() {
        return status;
    }


    public void setStatus(String status) {
        this.status = status == null ? null : status.trim();
    }


    public String getIssumtype() {
        return issumtype;
    }


    public void setIssumtype(String issumtype) {
        this.issumtype = issumtype == null ? null : issumtype.trim();
    }


    public Date getCjsj() {
        return cjsj;
    }


    public void setCjsj(Date cjsj) {
        this.cjsj = cjsj;
    }


    public Date getZhxgsj() {
        return zhxgsj;
    }


    public void setZhxgsj(Date zhxgsj) {
        this.zhxgsj = zhxgsj;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qujianjiutian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值