pom 添加依赖 <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.10</version> </dependency>
xml内容:
public static void main(String[] args){
String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<file xmlns=\"urn:gsma:params:xml:ns:rcs:rcs:fthttp\"\n" +
"xmlns:e=\"urn:gsma:params:xml:ns:rcs:rcs:up:fthttpext\">\n" +
"<file-info type=\"thumbnail\">\n" +
"<file-size>3576</file-size>\n" +
"<content-type>image/png</content-type>\n" +
"<data url=\"https://223.92.5.27:10001/s/05271020422311410130100012TD\" until=\"2020-06-03T10:20:42Z\"/>\n" +
"</file-info>\n" +
"<file-info type=\"file\">\n" +
"<file-size>7065</file-size>\n" +
"<file-name>????bg.png</file-name>\n" +
"<content-type>image/png</content-type>\n" +
"<data url=\"https://223.92.5.27:10001/s/05271020422311410130100012FD.png\" until=\"2020-06-03T10:20:42Z\"/>\n" +
"<file-exist>1</file-exist>\n" +
"<e:branded-url>https://1/s/ealTUqAABcL.png</e:branded-url>\n" +
"</file-info>\n" +
"</file>";
MappTestTe yyy=convertXmlStrToObjectww(MappTestTe.class,xml);
System.out.println("===---");
}
public static <T> T convertXmlStrToObjectww(Class<T> clazz, String xmlStr) {
try {
XStream xStream = new XStream();
XStream.setupDefaultSecurity(xStream);
xStream.allowTypesByRegExp(new String[] { ".*" });
xStream.processAnnotations(clazz);
return (T) xStream.fromXML(xmlStr);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
三个映射的实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
@XStreamAlias("file")
public class MappTestTe {
@XStreamImplicit(itemFieldName="file-info")
private List<MappTest> fileInfo;
}
@lombok.Data
@NoArgsConstructor
@AllArgsConstructor
public class MappTest {
@XStreamAsAttribute
private String type;
@XStreamAlias("file-name")
private String fileName;
@XStreamAlias("file-size")
private String fileSize;
@XStreamAlias("content-type")
private String contentType;
@XStreamAlias("file-exist")
private String fileExist;
@XStreamAlias("e:branded-url")
private String e;
@XStreamAlias("data")
private DataTest data;
}
@lombok.Data
@NoArgsConstructor
@AllArgsConstructor
public class DataTest {
@XStreamAsAttribute
private String url;
@XStreamAsAttribute
private String until;
}