Я новичок в разборе XML и хочу преобразовать XML-файл, полученный из веб-службы, в список POJO. поскольку я проделал некоторую работу с JSon и нашел, что с ней очень легко работать. в то время как в случае с XML существует тот же самый процесс, но я не могу найти способ прохождения по иерархии и достижения определенного узла, который будет проанализирован в POJO. Как я объясняю свой вопрос на примере. вот ответ в формате XML
<hash>
<resp_status>1</resp_status>
<message>success</message>
<errors></errors>
<calendars>
<calendar>
<id>44</id>
<name>Air Force</name>
<expiry_date>2012-03-01</expiry_date>
<thumbnail_url>http://www.countdownyourgame.com/uploads/44_thumbnail.png</thumbnail_url>
</calendar>
<calendar>
<id>103</id>
<name>Akron</name>
<expiry_date>2012-02-01</expiry_date>
<thumbnail_url>http://www.countdownyourgame.com/uploads/103_thumbnail.png</thumbnail_url>
</calendar>
<calendar>
<id>16</id>
<name>Alabama</name>
<expiry_date>2012-03-01</expiry_date>
<thumbnail_url>http://www.countdownyourgame.com/uploads/16_thumbnail.png</thumbnail_url>
</calendar>
</calendars>
и тот же ответ в формате JSon
{
"hash":
{
"resp_status":"1",
"message":"success",
"errors":"",
"calendars":
{
"calendar":[
{
"id":"44",
"name":"Air Force",
"expiry_date":"2012-03-01",
"thumbnail_url":"http://www.countdownyourgame.com/uploads/44_thumbnail.png"
},
{
"id":"103",
"name":"Akron",
"expiry_date":"2012-02-01",
"thumbnail_url":"http://www.countdownyourgame.com/uploads/103_thumbnail.png"
},
{
"id":"16",
"name":"Alabama",
"expiry_date":"2012-03-01",
"thumbnail_url":"http://www.countdownyourgame.com/uploads/16_thumbnail.png"
}
]
}
}
}
здесь POJO для объектов календаря, содержащихся внутри календарей (имя файла Calendar.java)
public class Calendar {
private String id, name, expiry_date, thumbnail_url;
Calendar() {
id = new String("");
name = new String("");
expiry_date = new String("");
thumbnail_url = new String("");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getExpiryDate() {
return expiry_date;
}
public void setExpiryDate(String expiry_date) {
this.expiry_date = expiry_date;
}
public String getThumbnailUrl() {
return thumbnail_url;
}
public void setThumbnailUrl(String name) {
this.thumbnail_url = name;
}
}
для преобразования вышеуказанного ответа JSon мне просто нужен следующий код
JSONObject json=new JSONObject(JsonResponceString);
for(int i=0;i<json.getJSONObject("hash").getJSONObject("calendars").getJSONArray("calendar").length();i++)
{
//by using refrenced jar of Gson
Calendars obj=new Gson().fromJson(json.getJSONObject("hash").getJSONObject("calendars").getJSONArray("calendar").getJSONObject(i).toString(), Calendar.class);
//ArrayList for calendar type objects
calendarList.add(obj);
}
для вышеупомянутого процесса с XML существует много парсеров, но я нашел XStream простой.
здесь, как показано в следующей ссылке http://x -stream.github.io / tutorial.html в примере есть один объект, а не массив объектов, который преобразуется в POJO, как определено в нижней части кода
вот мой вопрос: как я могу пройти весь XML-ответ и получить конкретные или все объекты календаря (объекты XML), которые можно преобразовать в строку, как в JSon, а затем передать в качестве аргумента в метод fromXML()
, чтобы проанализировал POJO.
любая идея написать собственный класс для разделения объектов календаря с использованием строковых методов или регулярных выражений займет столько же времени, сколько требуется для выбора простого синтаксического анализа, поэтому, пожалуйста, помогите мне дать четкий ответ, что процесс попытки возможны или нет, возможны, но не так ... тогда каким образом?
Я также изучал другие, особенно JAXB, но ему нужна схема, и хотя он может даже создавать POJO для вас, но что, если мне не нужен весь XML для анализа, проблема с большинством анализаторов, которые у меня есть, заключается в том, что они, вероятно, проанализировать весь ответ и, следовательно, требуя грязную структуру POJO для этого. если я ошибаюсь, пожалуйста, предложите мне, но на каком-нибудь убедительном примере ... спасибо