我正在使用 JAXB 做一个项目,但遇到了一个问题。程序的输出,即在 indexFields 的长度之前得到一个空值。我的 xml 文件看起来像这样
<?xml version="1.0" ?>
<XmlImportConfig>
<indexfields value="Corporate - Finance Documents">
<indexlist>
<index name="Field1" value="FDEPTNAME"/>
<index name="Field2" value="FDEPTGRP"/>
<index name="Field3" value="FDOCAREA"/>
<index name="Field4" value="FDOCTYPE"/>
<index name="Field10" value="RECDISPCODE"/>
<index name="Field11" value="RECMODIFYDATE"/>
<index name="Field12" value="RECDISPDATE"/>
<index name="Field15" value="FILECMIDKEY"/>
</indexlist>
</indexfields>
<indexfields value="Corporate - Governance Documents">
<indexlist>
<index name="Field1" value="GDEPTNAME"/>
<index name="Field2" value="GDEPTGRP"/>
<index name="Field3" value="GDOCAREA"/>
<index name="Field4" value="GDOCTYPE"/>
<index name="Field10" value="RECDISPCODE"/>
<index name="Field11" value="RECMODIFYDATE"/>
<index name="Field12" value="RECDISPDATE"/>
<index name="Field15" value="FILECMIDKEY"/>
</indexlist>
</indexfields>
</XmlImportConfig>
我写了一个示例代码
@XmlRootElement(name="XmlImportConfig")
public class XmlImportConfig {
private indexfields indexField;
private ArrayList<indexlist> listOfIndexes;
private ArrayList<indexfields> listOfIndexFields;
public indexfields getIndexField() {
return indexField;
}
@XmlElement(name="indexfields")
public void setIndexField(indexfields indexField) {
this.indexField = indexField;
}
public ArrayList<indexlist> getListOfIndexes(){
return listOfIndexes;
}
public ArrayList<indexfields> getListOfIndexFields(){
return listOfIndexFields;
}
@XmlElementWrapper(name = "XmlImportConfig")
@XmlElement(name = "indexfields")
public void setListOfIndexFields(ArrayList<indexfields> listOfIndexFields) {
this.listOfIndexFields = listOfIndexFields;
}
}
文件 2:
@XmlRootElement(name="indexfields")
@XmlAccessorType(XmlAccessType.FIELD)
public class indexfields {
@XmlAttribute
private String value;
private String indexlist;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
运行它的测试代码
public class testXml {
public static void main(String[] args) {
try {
// create JAXB context and initializing Marshaller
JAXBContext jaxbContext = JAXBContext.newInstance(XmlImportConfig.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
// specify the location and name of xml file to be read
File XMLfile = new File("C:\\Users\\Admin\\Desktop\\xml file\\KeywordFormConfig.xml");
// this will create Java object - country from the XML file
XmlImportConfig importCOnfig = (XmlImportConfig) jaxbUnmarshaller.unmarshal(XMLfile);
System.out.println("get Index Field value "+((indexfields)importCOnfig.getIndexField()).getValue());
System.out.println("length of indexFields "+importCOnfig.getListOfIndexFields());
} catch (JAXBException e) {
// some exception occured
e.printStackTrace();
}
}
}