Pages

Tuesday, May 6, 2014

xml parse

Parser Class


public class parser {

// constructor
public parser() {

}

/**
* Getting XML from URL making HTTP request
* @param url string
* */
public String getXmlFromUrl(String url) {
String xml = null;

try {
// defaultHttpClient
 HttpClient httpClient = new DefaultHttpClient();

 HttpPost httpPost = new HttpPost(url);

HttpResponse httpResponse = httpClient.execute(httpPost);

HttpEntity httpEntity = httpResponse.getEntity();


xml = EntityUtils.toString(httpEntity);

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// return XML
return xml;
}

/**
* Getting XML DOM element
* @param XML string
* */
public Document getDomElement(String xml){
Document doc = null;

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {



DocumentBuilder db = dbf.newDocumentBuilder();

InputSource is = new InputSource();
     
is.setCharacterStream(new StringReader(xml));
 
doc = db.parse(is);

} catch (ParserConfigurationException e) {
Log.e("Error: ", e.getMessage());
return null;
} catch (SAXException e) {
Log.e("Error: ", e.getMessage());
           return null;
} catch (IOException e) {
Log.e("Error: ", e.getMessage());
return null;
}

       return doc;
}

/** Getting node value
 * @param elem element
 */

/**
 * Getting node value
 * @param Element node
 * @param key string
 * */
public String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
/*Node child;
for( child = n.item(0).getFirstChild(); child != null; child = child.getNextSibling() )
            {
           
            return child.getNodeValue();
             
            }*/
return n.item(0).getFirstChild().getNodeValue();

}

}

Java Class

ArrayList<HashMap<String, String>> list = new  ArrayList<HashMap<String,String>>();
String URL = "";

@SuppressLint("NewApi")
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.activity_main);

parser parser = new parser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName("item");
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
String id = parser.getValue(e, "id");
String name = parser.getValue(e, "name");
String cost = parser.getValue(e, "cost");
map.put("A", id);
map.put("B", name);
map.put("C", cost);
list.add(map);
// Toast.makeText(MainActivity.this, ""+id.toString(), 10).show();
}
        
String from[] = {"A","B","C"};
int to[] = {R.id.a1,R.id.a2,R.id.a3};
ListAdapter adp = new SimpleAdapter(MainActivity.this, list, R.layout.abc, from, to);
setListAdapter(adp);
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
HashMap<String, String> nn = (HashMap<String, String>)arg0.getItemAtPosition(arg2);
Toast.makeText(MainActivity.this, ""+nn.get("B"), 10).show();
}
});

}

No comments:

Post a Comment