10
我有一个XML文档:JAXB解组集合
<?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;
}
}
我想用检索XML节点的值JAXB。我写了这个快速代码:
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);
}
}
当我运行它时,我总是得到零值。
感谢@skaffman这工作就像一个魅力! – jwesonga 2011-04-14 14:57:35
有关JAXB和集合的更多信息,请参阅:http://bdoughan.blogspot.com/2010/09/jaxb-collection-properties.html – 2011-04-14 15:02:29