[英]Java: Parsing XML With Simple XML
我正在嘗試使用簡單XML解析如下所示的BART站列表: https : //api.bart.gov/docs/stn/stns.aspx (鏈接: http : //simple.sourceforge.net/download /stream/doc/tutorial/tutorial.php )。 我已經將反序列化對象設置為:
StationList對象:
@Root(name = "root")
public class StationList {
@ElementList(name = "stations", inline = true)
private List<Station> stations;
@Element(name = "message", required = false)
private String message;
public StationList() {
}
public List<Station> getStations() {
return stations;
}
public String getMessage() {
return message;
}
}
站對象:
@Root(name = "station", strict = false)
public class Station {
@Element(name ="name")
private String name;
@Element(name = "abbr")
private String abbr;
@Element(name = "gtfs_latitude")
private double latitude;
@Element(name = "gtfs_longitude")
private double longitude;
@Element(name = "address")
private String address;
@Element(name = "city")
private String city;
@Element(name = "county")
private String county;
@Element(name = "state")
private String state;
@Element(name = "zipcode")
private int zipCode;
public String getName() {
return name;
}
public String getAbbr() {
return abbr;
}
public double getLatitude() {
return latitude;
}
public double getLongitude() {
return longitude;
}
public String getAddress() {
return address;
}
public String getCounty() {
return county;
}
public String getState() {
return state;
}
public int getZipCode() {
return zipCode;
}
}
無論我嘗試什么,我都無法成功解析站點列表。 我究竟做錯了什么?
如果要轉換此xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<uri><![CDATA[ http://api.bart.gov/api/stn.aspx?cmd=stns ]]></uri>
<stations>
<station>
<name>12th St. Oakland City Center</name>
<abbr>12TH</abbr>
<gtfs_latitude>37.803664</gtfs_latitude>
<gtfs_longitude>-122.271604</gtfs_longitude>
<address>1245 Broadway</address>
<city>Oakland</city>
<county>alameda</county>
<state>CA</state>
<zipcode>94612</zipcode>
</station>
...
<station>
<name>West Oakland</name>
<abbr>WOAK</abbr>
<gtfs_latitude>37.80467476</gtfs_latitude>
<gtfs_longitude>-122.2945822</gtfs_longitude>
<address>1451 7th Street</address>
<city>Oakland</city>
<county>alameda</county>
<state>CA</state>
<zipcode>94607</zipcode>
</station>
</stations>
<message />
</root>
您提供了正確的Java類,但是經過很少的修改它就開始起作用。 看一下我的StationList
類:
import java.util.List;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;
@Root(name = "root")
public class StationList {
@ElementList(name = "stations")
private List<Station> stations;
@Element(name = "message", required = false)
private String message;
@Element(name = "uri")
private String uri;
public StationList() {
}
public List<Station> getStations() {
return stations;
}
public String getMessage() {
return message;
}
public String getUri() {
return uri;
}
public static void main(String[] args) throws Exception {
Serializer serializer = new Persister();
StationList example = serializer.read(StationList.class,
StationList.class.getResourceAsStream("simplexml.xml"));
System.out.println(example.getStations().size());
}
}
它為<uri>
xml標簽添加@Element String uri
,並為<stations>
標簽刪除inline = true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.