XmlPullParser を使用して、xml ファイルをそのような形式で解析しようとしています
<BOOK bnumber="1">
<CHAPTER cnumber="1">
<VERS vnumber="1">abc</VERS>
<VERS vnumber="2">cde</VERS>
<VERS vnumber="3">fgh</VERS>
</CHAPTER>
<CHAPTER cnumber="2">
<VERS vnumber="1">abc</VERS>
<VERS vnumber="2">cde</VERS>
<VERS vnumber="3">fgh</VERS>
</CHAPTER>
</BOOK>
以下は、私が開発しようとしているコードです。私がやりたいことは、データを配列に入れ、データを呼び出して後で使用できるようにすることです。私の目的に合わせてコードを変更する方法についてアドバイスをいただけますか?
ArrayList<LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> array;
ArrayList<LinkedHashMap<String, String>> array2;
LinkedHashMap map,map_1 ;
try {
/** Handling XML */
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
/** Handling XML */
/** Send URL to parse XML Tags */
URL sourceUrl = new URL(
"http://123.com/mobile/1.xml");
/** Create handler to handle XML Tags ( extends DefaultHandler ) */
xpp.setInput(sourceUrl.openStream(), null);
int eventType = xpp.getEventType();
String currentTag = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
System.out.println("START_DOCUMENT "+xpp.getName());
array = new ArrayList<LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>>();
break;
case XmlPullParser.START_TAG:
if ("CHAPTER".equals(xpp.getName()))
{
array2 = new ArrayList<LinkedHashMap<String, String>>();
map_1 = new LinkedHashMap<String, Object>();
map_1.put("cnumber",xpp.getAttributeValue(0));
}
else if ("VERS".equals(xpp.getName()))
{
map = new LinkedHashMap<String, Object>();
String Vers_number = xpp.getAttributeValue(0);
String Vers_content=xpp.nextText();
map.put("vnumber",Vers_number);
map.put("vcontent",Vers_content);
array2.add(map);
}
break;
case XmlPullParser.END_TAG:
if ("CHAPTER".equals(xpp.getName()))
{
map_1.put("in",array2);
array.add(map_1);}
break;
}
eventType = xpp.next();
}
itemCount=array.size();
}catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
データを取り戻すためのコード[方法がわかりません。以下は私の考えです]
try{
for(int i=0;i<itemCount;i++)
{
ArrayList<LinkedHashMap<String, String>> ch=array.get(i).get("cnumber");
ArrayList<LinkedHashMap<String, String>> in=array.get(i).get("in");
}