我有以下tester.xml文件,其中包含有關事件的一些信息。解組在JAXB
<?xml version="1.0"?>
<resultset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="esid">539661</field>
<field name="esname">Title 01</field>
<field name="eslink">http://www.some_event_link.com</field>
<field name="estext">Event description 01</field>
<field name="esinfo" xsi:nil="true" />
<field name="espicture_small">http://www.some_event_link.com/media/small_image.jpg</field>
<field name="espicture">http://www.some_event_link.com/media/some_image..gif</field>
<field name="espicture_big">http://www.some_event_link.com/media/big_image.jpg</field>
<field name="esbegin">2000-11-22</field>
<field name="esend">2011-12-15</field>
<field name="eventid">1379305</field>
<field name="eventname">Event name 01</field>
<field name="eventdate">2011-10-12</field>
<field name="eventtime">19:00:00</field>
<field name="eventlink">http://www.mysite.com/tickets.html</field>
<field name="eventvenue">Event venue 01</field>
</row>
<row>
<field name="esid">539636</field>
<field name="esname">Title 02</field>
<field name="eslink">http://www.some_event_link.com</field>
<field name="estext">Event description 02</field>
<field name="esinfo" xsi:nil="true" />
<field name="espicture_small">http://www.some_event_link.com/media/small_image.jpg</field>
<field name="espicture">http://www.some_event_link.com/media/some_image..gif</field>
<field name="espicture_big">http://www.some_event_link.com/media/big_image.jpg</field>
<field name="esbegin">2000-10-10</field>
<field name="esend">2011-11-01</field>
<field name="eventid">1379081</field>
<field name="eventname">Event name 01</field>
<field name="eventdate">2011-10-12</field>
<field name="eventtime">14:00:00</field>
<field name="eventlink">http://www.mysite.com/tickets.html</field>
<field name="eventvenue">Event venue 02</field>
</row>
我也有我的XML映射類如下。
第一個是對應於該標記的類<結果集>
package com.wapice.xml.beans;
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "resultset")
public class Resultset {
private ArrayList<Row> rowsList;
@XmlElement(required = true, name = "row")
public ArrayList<Row> getRowsList() {
return rowsList;
}
public void setRowsList(ArrayList<Row> rowsList) {
this.rowsList = rowsList;
}
}
接着是對應於所述標籤<行>
package com.wapice.xml.beans;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name = "row")
@XmlType(propOrder = {"field"})
public class Row {
private String field;
@XmlElement(required = true, name = "field")
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
}
我試圖解組此xml到類對象&使用以下代碼片段在我的控制檯上打印字段名稱&值。
try {
JAXBContext context = JAXBContext.newInstance(Resultset.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Resultset resultSet = (Resultset)unmarshaller.unmarshal(new FileReader("tester.xml"));
for(Row row : resultSet.getRowsList()){
System.out.println("Field : " +row.getField());
}
}
catch (JAXBException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
但是當我運行上面的代碼,它只能打印最後一個字段的值。輸出如下。
Field : Event venue 01
Field : Event venue 02
是否有人可以告訴我,我在做什麼錯在這裏&這將不勝感激,如果有人能告訴我如何打印我的所有<場>他們的名字&值一起。
在此先感謝。
Asela。
發生異常是因爲默認訪問類型爲PUBLIC_MEMBER,並且由於註釋位於字段JAXB上,因此認爲您將字段和屬性映射到同一個XML元素。以下文章應該可以幫助你:http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html –