使用JAXBContext轻松实现Java和xml的互相转换方式

网友投稿 353 2022-12-20

使用JAXBContext轻松实现Java和xml的互相转换方式

JAXBContext实现java和xml的互相转换

类文件注解:@XmlRootElement不可缺少

@XmlRootElement

public class Man {

private String name;

private int age;

public Student() {

super();

}

public Student(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

Java 转换 Xml:

@Test

public void testJava2Xml(){

try {

JAXBContext jc = JAXBContext.newInstance(Man.class);

Marshaller ms = jc.createMarshaller();

Man man = new Man("man",100);

ms.marshal(man, System.out);

} catch (JAXBException e) {

e.printStackTrace();

}

}

Xml 转换 Java:

@Test

public void testXml2Java() throws JAXBException{

String xml = "100man";

JAXBContext jc = JAXBContext.newInstance(Man.class);

Unmarshaller unmar = jc.createUnmarshaller();

Man man = (Man) unmar.unmarshal(new StringReader(xml));

System.out.println(man.getName());

}

JAXBContext 解析 xml

前提:

package com.sgcc.load.vo;

import java.util.ArrayList;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "gldxresult")

@XmlAccessorType(XmlAccessType.FIELD)

public class XmlAnalysis { // 泛化, 聚合

@XmlElement(name = "success")

private String success;

@XmlElement(name = "totalnum")

private String totalnum;

@XmlElement(name = "accounts")

List accounts = new ArrayList<>();

public List getAccounts() {

return accounts;

}

public void setAccounts(List accounts) {

this.accounts = accounts;

}

public String getSuccess() {

return success;

}

public void setSuccess(String success) {

this.success = success;

}

public String getTotalnum() {

return totalnum;

}

public void setTotalnum(String totalnum) {

this.totalnum = totalnum;

}

}

package com.sgcc.load.vo;

import java.util.ArrayList;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

@SuppressWarnings("serial")

@XmlAccessorType(XmlAccessType.FIELD)

public class Accounts extends ArrayList{

@XmlElement(name = "account")

public List getAccount() {

umvjbI return this;

}

}

package com.sgcc.load.vo;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)

public class Account {

@XmlElement(name = "seqid")

private String seqid;

@XmlElement(name = "dxid")

private String dxid;

@XmlElement(name = "compid")

private String compid;

@XmlElement(name = "rspcode")

private String rspcode;

@XmlElement(name = "code")

private String code;

@XmlElement(name = "name")

private String name;

public String getSeqid() {

return seqid;

}

public void setSeqid(String seqid) {

this.seqid = seqid;

}

public String getDxid() {

return dxid;

}

public void setDxid(String dxid) {

this.dxid = dxid;

}

public String getCompid() {

return compid;

}

public void setCompid(String compid) {

this.compid = compid;

}

public String getRspcode() {

return rspcode;

}

public void setRspcode(String rspcode) {

this.rspcode = rspcode;

}

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

测试:

package com.sgcc.load.test;

import java.io.StringReader;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Unmarshaller;

import com.sgcc.load.vo.Accounts;

import com.sgcc.load.vo.XmlAnalysis;

import groovyjarjarcommonscli.ParseException;

public class Test {

private static XmlAnalysis transToVOs(String webserviceMsg) throws JAXBException, ParseException {

final StringReader reader = new StringReader(webserviceMsg);

JAXBContext ctx=JAXBContext.newInstance(new XmlAnalysis().getClass());

Unmarshaller um=ctx.createUnmarshaller();

XmlAnalysis ds=(XmlAnalysis)um.unmarshal(reader);

return ds;

}

public static void main(String[] args) {

String xmlMsg = " \n01"+

"hahaha11360051180603New0001值:00 没有匹配到分类"+

"EHBSXPZYFDC000哈哈哈哈哈哈哈哈哈";

try{

XmlAnalysis transToVOs = transToVOs(xmlMsg);

for(int index = 0;index

System.out.println(transToVOs.getAccounts().get(0).getAccount().get(index).getName());

}

}catch(Exception e){

e.printStackTrace();

}

}

}

System.out.println(transToVOs.getAccounts().get(0).getAccount().get(index).getName());

}

}catch(Exception e){

e.printStackTrace();

}

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:idea新建聚合项目并附上标签的详细过程
下一篇:java基础的详细了解第五天
相关文章

 发表评论

暂时没有评论,来抢沙发吧~