我試圖理解我在這裏做錯了什麼,但它對我來說真的沒有意義。 我有一個類calleld LatLongBean 在這裏我試圖解析一個XML提要。當使用getter時,返回null值
我有一個方法,我做所有的邏輯。 和我有一些getters和setter。
這似乎是制定者工作,但吸氣劑不工作。
這是LatLongBean:
public class LatLongBean {
private String lat;
private String lng;
private String address;
private String url = "http://maps.googleapis.com/maps/api/geocode/xml?address=";
public void LatLongBean(String address, String lat, String lng) throws ParserConfigurationException, SAXException, IOException {
this.address = address;
this.lat = lat;
this.lng = lng;
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new URL(url + address + "&sensor=false").openStream());
doc.getDocumentElement().normalize();
NodeList nodes = doc.getElementsByTagName("location");
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
lat = getValue("lat", element);
lng = getValue("lng", element);
}
}
}
private static String getValue(String tag, Element element) {
NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node) nodes.item(0);
return node.getNodeValue();
}
public String getLat() {
System.out.println(lat);
return lat;
}
public String getLng() {
System.out.println(lng);
return lng;
}
public void setAddress(String address) {
this.address = address;
}
}
,這是我做什麼使用這個類:
LatLongBean latLong1 = new LatLongBean();
latLong1.setAddress("Amsterdam");
latLong1.getLat();
latLong1.getLng();
的吸氣劑返回null!
當我做了LatLongBean方法不是void和使用,因爲它就像一個魅力構造:
LatLongBean latLong1 = new LatLongBean("Amsterdam");
latLong1.getLat();
latLong1.getLng();
有人能幫助我嗎?
Thanx提前!
你的代碼」已發佈甚至不會編譯,因爲你調用'new LatLongBean()'而不傳遞一個地址,並且你還沒有聲明這樣一個con structor。編輯:啊 - 我沒有發現它實際上不是一個構造函數。伊克! – 2013-05-10 05:37:24
「lat」和「lng」完全沒有被初始化。如果'node.getNodeType()== Node.ELEMENT_NODE'對於任何'node'都不是真的,那麼它們都不會被初始化。 – Yuushi 2013-05-10 05:39:35
確實。 Java默認構造函數僅在未指定任何其他構造函數的情況下生成,或者顯然已將其包含在類定義中。在這一點上,我懷疑你的Getter是看到代碼的問題,但是檢索值。一個重要的說明,代碼不會做你想做的事情。如果有多個Amsterdams,就像您的示例一樣,只有結果列表中最後一個阿姆斯特丹的位置可供您使用。由於這是很少受歡迎的城市,因此您的代碼可能不像預期的那樣行事! – Eric 2013-05-10 05:46:23