I'm having a xml as mentioned below.
<labels>
<label id="lblMS">
<text language="EN" value="Morning Sync"/>
<text language="DE" value="Morgan Sync"/>
</label>
<label id="lblES">
<text language="EN" value="Evening Sync"/>
<text language="DE" value="Sync Abend"/>
</label>
<label id="lblAS">
<text language="EN" value="Afternoon Sync"/>
<text language="DE" value="Sync Afternoon"/>
</label>
</labels>
I can able to parse using the xmlpull parser node by node as shown below.
private HashMap<String, String> readCountry(XmlPullParser parser)
throws XmlPullParserException, IOException
{
parser.require(XmlPullParser.START_TAG, ns, "label");
String labelid = parser.getAttributeValue(ns, "id");
String textlan = "";
String textval="";
String capital="";
String currencyCode="";
String currency="";
while(parser.next() != XmlPullParser.END_TAG){
if(parser.getEventType() != XmlPullParser.START_TAG){
continue;
}
String name = parser.getName();
if(name.equals("text")){
textlan = parser.getAttributeValue(ns, "language");
textval = parser.getAttributeValue(ns,"value");
readCapital(parser);
}else{
skip(parser);
}
}
String details = "Language : " + textlan + "\n" +
"Value : " + textval + "\n";
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("id", labelid);
hm.put("details",details);
return hm;
}
But my requirement is little different. I want make the label which contains id as the key and all the child nodes ie. text nodes as the value for the label id.
I'm struggling a lot to do this. Could you please help me in this regard.Thank you
Try this solution-
Add the Hashmap to ArrayList. So you will have a list of hashmaps in the format of "key" : "value" type.
private HashMap<String, String> readCountry(XmlPullParser parser)
throws XmlPullParserException, IOException
{
parser.require(XmlPullParser.START_TAG, ns, "label");
String labelid = parser.getAttributeValue(ns, "id");
String textlan = "";
String textval="";
String capital="";
String currencyCode="";
String currency="";
HashMap<String, String> hm = new HashMap<String, String>();
ArrayList<HashMap> al=new ArrayList<HashMap>();
while(parser.next() != XmlPullParser.END_TAG){
if(parser.getEventType() != XmlPullParser.START_TAG){
continue;
}
String name = parser.getName();
if(name.equals("text")){
textlan = parser.getAttributeValue(ns, "language");
textval = parser.getAttributeValue(ns,"value");
readCapital(parser);
String details = "Language : " + textlan + "\n" +
"Value : " + textval + "\n";
hm.put(labelid, details);
al.add(hm);
}else{
skip(parser);
}
}
someArray = compareXMLValues(timeSessionId,al);
//return al;
return someArray;
}
compareXMLValues(timeSessionId,al)
{
parse full XML of syncgroupsettings;
And compare if (timeSessionId == parser.getAttributeValue(ns, "labelid"))
{
if it is true-
read from while loop, syncgroupname and store in Array list of Strings.
}
else
{
continue;
}
}
Hope it helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With