目录

在线-xml转java对象_XML转Java实体对象

目录

在线 xml转java对象_XML转Java实体对象

1.当拿到的xml是String 类型的

String xml = "" +

“张三” +

“男” +

“28” +

“”;

通过下面方法就可以转成java对象

public static T xmlToBean(String xmlPath,Class load) throws JAXBException {

JAXBContext context = JAXBContext.newInstance(load);

Unmarshaller unmarshaller = context.createUnmarshaller();

return (T) unmarshaller.unmarshal(new StringReader(xmlPath));

}

Java对象需要@XmlAccessorType(XmlAccessType.FIELD);@XmlType;@XmlRootElement(name = “User”)注释用来映射

@Data

@JsonSerialize

@XmlAccessorType(XmlAccessType.FIELD)

@XmlType(name = “",propOrder = {

“name”,

“age”,

“sex”

})

@XmlRootElement(name = “User”)

public class User {

private String name;

private Integer age;

private String sex;

}

最后直接调用方法就可以

User user = (User) JaxbUtil.xmlToBean(xml, User.class);

2.当拿到的xml与实体类的属性名不一致时,将@XmlType注释换成@XmlElement(name = “Name”, required = true)单独为每个属性注释,

@Data

@JsonSerialize

@XmlAccessorType(XmlAccessType.FIELD)

@XmlRootElement(name = “User”)

public class User {

@XmlElement(name = “Name”, required = true)

private String name;

@XmlElement(name = “Age”, required = true)

private Integer age;

@XmlElement(name = “Sex”, required = true)

private String sex;

}

3.当拿到的xml不是String类型是,是NoteList对象;需要先转为String在转为对象

MessageElement[] elements = value.get_any();

调用转换方法

List outboundlist = (List) JaxbUtil.xmlToString(HicOutBoundDTO.class,elements,“Outbound”);

该方法是直接转为对象的List集合了

public static T xmlToString(Class load, MessageElement[] elements, String table) {

try{

NodeList outbound = elements[1].getElementsByTagName(table);

List listDto = new ArrayList<>() ;

for(int i=0;i

Element node = (Element)outbound.item(i);

TransformerFactory transFactory = TransformerFactory.newInstance();

Transformer transformer = transFactory.newTransformer();

StringWriter buffer = new StringWriter();

transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, “yes”);

transformer.transform(new DOMSource(node),

new StreamResult(buffer));

String str = buffer.toString();

//再转为java对象

JAXBContext context = JAXBContext.newInstance(load);

Unmarshaller unmarshaller = context.createUnmarshaller();

listDto.add(unmarshaller.unmarshal(new StringReader(str)));

}

return (T)listDto;

}

catch(Exception e)

{

return null;

}

}

4需要一个一个的值拿出来的时候

Element node = (Element)outbound.item(0);

node.getElementsByTagName(“DeliveyType”).item(0).getFirstChild().getNodeValue();