Note that there are some explanatory texts on larger screens.

plurals
  1. POXML parsing failure
    primarykey
    data
    text
    <p>I am writing an application for XML parser in android But when I download the code and run it, it runs perfectly , But I wrote the same code but not working, Why so? </p> <p>Is there any prerequisite for that? Please help me with this</p> <p><strong>I am getting an error in <code>XMLParser.java</code></strong></p> <pre><code>package com.xmlparser; import java.io.IOException; import java.io.StringReader; import java.io.UnsupportedEncodingException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import android.util.Log; public class XMLParser { // constructor public XMLParser() { } /** * Getting XML from URL making HTTP request * @param url string * */ public String getXmlFromUrl(String url) { String xml = null; try { // defaultHttpClient DefaultHttpClient 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 */ public final String getElementValue( Node elem ) { Node child; if( elem != null){ if (elem.hasChildNodes()){ for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){ if( child.getNodeType() == Node.TEXT_NODE ){ return child.getNodeValue(); } } } } return ""; } /** * Getting node value * @param Element node * @param key string * */ public String getValue(Element item, String str) { NodeList n = item.getElementsByTagName(str); return this.getElementValue(n.item(0)); } } </code></pre> <p>My Log Cat</p> <pre><code>11-22 15:35:53.675: E/AndroidRuntime(19208): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xmlparser/com.xmlparser.Xparser}: android.os.NetworkOnMainThreadException 11-22 15:35:53.675: E/AndroidRuntime(19208): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 11-22 15:35:53.675: E/AndroidRuntime(19208): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 11-22 15:35:53.675: E/AndroidRuntime(19208): at android.app.ActivityThread.access$600(ActivityThread.java:140) 11-22 15:35:53.675: E/AndroidRuntime(19208): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 11-22 15:35:53.675: E/AndroidRuntime(19208): at android.os.Handler.dispatchMessage(Handler.java:99) 11-22 15:35:53.675: E/AndroidRuntime(19208): at android.os.Looper.loop(Looper.java:137) 11-22 15:35:53.675: E/AndroidRuntime(19208): at android.app.ActivityThread.main(ActivityThread.java:4898) 11-22 15:35:53.675: E/AndroidRuntime(19208): at java.lang.reflect.Method.invokeNative(Native Method) 11-22 15:35:53.675: E/AndroidRuntime(19208): at java.lang.reflect.Method.invoke(Method.java:511) 11-22 15:35:53.675: E/AndroidRuntime(19208): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008) 11-22 15:35:53.675: E/AndroidRuntime(19208): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775) 11-22 15:35:53.675: E/AndroidRuntime(19208): at dalvik.system.NativeStart.main(Native Method) 11-22 15:35:53.675: E/AndroidRuntime(19208): Caused by: android.os.NetworkOnMainThreadException 11-22 15:35:53.675: E/AndroidRuntime(19208): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118) 11-22 15:19:21.500: E/AndroidRuntime(16631): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 11-22 15:19:21.500: E/AndroidRuntime(16631): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 11-22 15:19:21.500: E/AndroidRuntime(16631): at java.net.InetAddress.getAllByName(InetAddress.java:214) 11-22 15:19:21.500: E/AndroidRuntime(16631): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 11-22 15:19:21.500: E/AndroidRuntime(16631): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 11-22 15:19:21.500: E/AndroidRuntime(16631): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 11-22 15:19:21.500: E/AndroidRuntime(16631): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 11-22 15:19:21.500: E/AndroidRuntime(16631): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:670) 11-22 15:19:21.500: E/AndroidRuntime(16631): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509) 11-22 15:19:21.500: E/AndroidRuntime(16631): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 11-22 15:19:21.500: E/AndroidRuntime(16631): at com.xmlparser.XMLParser.getXmlFromUrl(XMLParser.java:45) 11-22 15:19:21.500: E/AndroidRuntime(16631): at com.xmlparser.Xparser.onCreate(Xparser.java:37) 11-22 15:19:21.500: E/AndroidRuntime(16631): at android.app.Activity.performCreate(Activity.java:5206) 11-22 15:19:21.500: E/AndroidRuntime(16631): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 11-22 15:19:21.500: E/AndroidRuntime(16631): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) </code></pre> <p>this is my Xparser.java</p> <pre><code>package com.xmlparser; import java.util.ArrayList; import java.util.HashMap; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class Xparser extends ListActivity { static final String URL = "http://api.androidhive.info/pizza/?format=xml"; // XML key nodes static final String KEY_ITEM = "item"; static final String KEY_ID = "id"; static final String KEY_NAME = "name"; static final String KEY_COST = "cost"; static final String KEY_DESC = "description"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xmlparser); ArrayList&lt;HashMap&lt;String, String&gt;&gt; menuItems = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(URL);// getting XML Document doc = parser.getDomElement(xml);// getting Dom Element NodeList n1 = doc.getElementsByTagName(KEY_ITEM); // looping through all item nodes &lt;item&gt; for(int i=0 ; i &lt; n1.getLength(); i++){ HashMap&lt;String,String&gt; map = new HashMap&lt;String,String&gt;(); Element e = (Element) n1.item(i); //adding each child to Hashmap node key map.put(KEY_ID, parser.getValue(e,KEY_ID)); map.put(KEY_NAME, parser.getValue(e,KEY_NAME)); map.put(KEY_COST, "Rs."+ parser.getValue(e,KEY_COST)); map.put(KEY_DESC, parser.getValue(e,KEY_DESC)); // adding HashList to ArrayList menuItems.add(map); } // Adding menuItems to ListView ListAdapter adapter = new SimpleAdapter(this, menuItems, R.layout.list_select_item, new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] { R.id.name, R.id.desciption, R.id.cost }); setListAdapter(adapter); // selecting single ListView item ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { // TODO Auto-generated method stub String name = ((TextView) view.findViewById(R.id.name)).getText().toString(); String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString(); String desc = ((TextView) view.findViewById(R.id.desciption)).getText().toString(); Intent in = new Intent(); in.putExtra(KEY_NAME, name); in.putExtra(KEY_DESC, desc); in.putExtra(KEY_COST, cost); startActivity(in); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.xmlparser, menu); return true; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload