Monday, 7 December 2015

get particular / Main Tag tag data from xml in android using sax parser


// The following method used to get the single  Tag details in ArrayList

ArrayList<String> req_FieldsData=Sax_Parser.getListByTag(output response from server, specific Tag name);


Step 1> Create Sax_Parser.java and paste following code.

// Here input parameter to getListByTag is
msg = Output response from server which is in xml format
tag == Particular xml tag name



public static ArrayList<String> getListByTag(String msg,final String tag){

final ArrayList<String> list=new ArrayList<String>();

try{

list.clear();

SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
// parser.parse(is, dh)//


parser.parse(new InputSource(new StringReader(msg)),new DefaultHandler(){

boolean tag_value=false;

@Override
public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);

if(qName.equalsIgnoreCase(tag)){
tag_value=true;
}

}

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
if(tag_value){
list.add(new String(ch,start,length));
}
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
super.endElement(uri, localName, qName);
if(qName.equalsIgnoreCase(tag)){
tag_value=false;
}
}
});

}catch (Exception e) {

e.printStackTrace();
}
return list;

}



Step 2> Here above methods returns the values of Specified Tag in  ArrayList.
/////////////////////////////////////////////

This Method returns the Number of Main Tag data in ArrayList<ArrayList<String>>





public static ArrayList<ArrayList<String>> getListofHouseHoldsByTag(String msg,final String tag){

final ArrayList<ArrayList<String>>  list_values=new ArrayList<ArrayList<String>>();

try{

SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();



parser.parse(new InputSource(new StringReader(msg)),new DefaultHandler(){

ArrayList<String> list;

boolean tag_value=false;

@Override
public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);

if(qName.equalsIgnoreCase(tag)){
tag_value=true;
list=new ArrayList<String>();
}

}

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
if(tag_value){
list.add(new String(ch,start,length));
}
}  

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
super.endElement(uri, localName, qName);

if(qName.equalsIgnoreCase(tag)){
tag_value=false;

list_values.add(list);  

}
}
});

}catch (Exception e) {

e.printStackTrace();
}
return list_values;  

}










No comments:

Post a Comment