在线-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();