我有一个
XML文档:
<?xml version="1.0" encoding="UTF-8"?> <Log> <logEntry> <severity>WARN</severity> <dateTime>2011-03-17 15:25</dateTime> <message>Here is the text from the application</message> <class>(class name)</class> <program> TB Reception</program> </logEntry> <logEntry> <severity>WARN</severity> <dateTime>2011-03-17 15:25</dateTime> <message>Here is the text from the application</message> <class>(class name)</class> <program> TB Reception</program> </logEntry> </Log>
和两个POJO:
package org.jwes.jaxb.jax; import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name="Log") public class Log { @XmlElementWrapper(name = "logEntry") private List<LogEntry> logList; public List<LogEntry> getLogEntries() { return logList; } public void setLogEntries(List<LogEntry> logList) { this.logList = logList; } }
package org.jwes.jaxb.jax; import java.io.Serializable; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name="LogEntry") public class LogEntry{ private String source; private String message; private String severity; private String program; private String className; public String getSource() { return source; } public void setSource(String source) { this.source = source; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getSeverity() { return severity; } public void setSeverity(String severity) { this.severity = severity; } public String getProgram() { return program; } public void setProgram(String program) { this.program = program; } @XmlElement(name = "class") public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } }
public class App { public static void main( String[] args ) throws JAXBException,IOException { JAXBContext jc = JAXBContext.newInstance(Log.class); Unmarshaller um = jc.createUnmarshaller(); Log logElement=(Log)um.unmarshal(new FileReader("src/main/resources/log.xml")); System.out.println(logElement.getLogEntries().toArray().length); } }
当我运行它时,我总是获得零值.
解决方法
你不应该在这里使用@XmlElementWrapper,只是@XmlElement:
@XmlRootElement(name="Log") public class Log { @XmlElement(name = "logEntry") private List<LogEntry> logList;