我正在使用JSoup解析站点地图。
public void mySightingsJsonRequest() {
//get username held in shared preferences (KMcE)
HashMap<String, String> user = newSession.getUsername();
final String username = user.get(SessionUtility.KEY_USERNAME);
JSONObject obj = new JSONObject();
try {
obj.put("Username", username);
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest mySightingsRequest = new JsonObjectRequest(Request.Method.POST, ConnectionURLs.MY_SIGHTINGS, obj, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, "onResponse: MySightings response");
try {
JSONArray jsonArray = response.getJSONArray("server_response");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject sighting = jsonArray.getJSONObject(i);
int sightingRecordingNumber = sighting.getInt("Recording Number");
String sightingImgURL = sighting.getString("IMG");
String sightingCommonName = sighting.getString("Common Name");
String sightingUsername = sighting.getString("Submitted by");
double sightingLongitude = sighting.getDouble("Longitude");
double sightingLatitude = sighting.getDouble("Latitude");
mSightingList.add(new SightingSingle(sightingRecordingNumber, sightingImgURL, sightingCommonName, sightingUsername, sightingLatitude, sightingLongitude));
}
mMySightingsAdapter = new MySightingsAdapter(getActivity(), mSightingList);
mMySightingRecyclerView.setAdapter(mMySightingsAdapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
mRequestQueue.add(mySightingsRequest);
}
输出:
Document dom = Jsoup.parse(new URL(pageRacine).openStream(), "UTF-8", "https://www.lavisducagou.nc/page-sitemap.xml");
Elements liens = dom.getElementsByTag("a");
System.out.println(liens.size() + " links have been retrieved");
我也尝试过这种方法,但是不起作用:
0 links have been retrieved
有人可以帮助我我疯了吗?
编辑:Document dom = Jsoup.parse(String.valueOf(new URL("https://www.lavisducagou.nc/page-sitemap.xml").openStream()), "", Parser.xmlParser());
liens = dom.select("a");
输出System.out.println(dom.body());
。
答案 0 :(得分:1)
您没有任何链接,因为站点地图没有标签为a
的元素。网站地图中的网址位于标签loc
中。使用Elements liens = dom.getElementsByTag("loc");
您可能对浏览器中的内容感到误解。使用浏览器时,您会收到两个请求。第一个下载sitemap.xml,第二个下载main-sitemap.xsl,其中包含有关浏览器如何显示xml文件的信息。
Jsoup不这样做。使用System.out.println(dom.html())
查看Jsoup下载的文档的外观。
使用浏览器中的网络标签查看下载了哪些元素,以显示数据。