How to Parse XML file Using Dom Parsing?

后端 未结 2 1037
甜味超标
甜味超标 2021-01-29 11:18

My Problem is I am Using Dom Parsing to parse below xml file but this give me error of NullPointerException.

Any Help Would be Appreciated.

MainActivity.java

2条回答
  •  走了就别回头了
    2021-01-29 12:07

    Try this:

    public class DomParserSampleActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            ScrollView mScrView1 = new ScrollView(this);
    
            /** Create a new layout to display the view */
            LinearLayout layout = new LinearLayout(this);
            layout.setOrientation(1);
    
            /** Create a new textview array to display the results */
            TextView id[];
            TextView published[];
            TextView content[];
            TextView title[];
    
            TextView mediacontent[];
            TextView mediathumbnail[];
    
            try {
                URL url = new URL(
                        "http://gdata.youtube.com/feeds/api/users/estudiosabiertostv/uploads");
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                Document doc = db.parse(new InputSource(url.openStream()));
                doc.getDocumentElement().normalize();
    
                NodeList nodeList = doc.getElementsByTagName("entry");
    
                /** Assign textview array length by arraylist size */
                id = new TextView[nodeList.getLength()];
                published = new TextView[nodeList.getLength()];
                content = new TextView[nodeList.getLength()];
                title = new TextView[nodeList.getLength()];
                mediacontent = new TextView[nodeList.getLength()];
                mediathumbnail = new TextView[nodeList.getLength()];
    
                for (int i = 0; i < nodeList.getLength(); i++) {
    
                    Node node = nodeList.item(i);
    
                    id[i] = new TextView(this);
                    published[i] = new TextView(this);
                    content[i] = new TextView(this);
                    title[i] = new TextView(this);
    
                    Element fstElmnt = (Element) node;
    
                    NodeList idList = fstElmnt.getElementsByTagName("id");
                    Element idElement = (Element) idList.item(0);
                    idList = idElement.getChildNodes();
                    id[i].setText("Id is = "
                            + ((Node) idList.item(0)).getNodeValue());
    
                    Log.v("TAG","id: "+idList.item(0).getNodeValue());
    
                    NodeList publishedList = fstElmnt
                            .getElementsByTagName("published");
                    Element publishedElement = (Element) publishedList.item(0);
                    publishedList = publishedElement.getChildNodes();
                    published[i].setText("published is = "
                            + ((Node) publishedList.item(0)).getNodeValue());
    
                    Log.v("TAG","published: "+publishedList.item(0).getNodeValue());
    
                    NodeList contentList = fstElmnt.getElementsByTagName("content");
                    Element contentElement = (Element) contentList.item(0);
                    contentList = contentElement.getChildNodes();
                    content[i].setText("content is = "
                            + ((Node) contentList.item(0)).getNodeValue());
    
                    Log.v("TAG","content: "+contentList.item(0).getNodeValue());
    
                    NodeList titleList = fstElmnt.getElementsByTagName("title");
                    Element titleElement = (Element) titleList.item(0);
                    titleList = titleElement.getChildNodes();
                    title[i].setText("title is = "
                            + ((Node) titleList.item(0)).getNodeValue());
    
                    Log.v("TAG","titulo: "+titleList.item(0).getNodeValue());
    
                    NodeList nodeList1 = fstElmnt
                            .getElementsByTagName("media:group");
    
                    for (int j = 0; j < nodeList1.getLength(); j++) {
                        Node node1 = nodeList1.item(j);
                        mediacontent[j] = new TextView(this);
                        mediathumbnail[j] = new TextView(this);
    
                        Element secondElmnt = (Element) node1;
    
                        NodeList mediacontentList = secondElmnt
                                .getElementsByTagName("media:content");
                        Element mediacontentElement = (Element) mediacontentList
                                .item(0);
                        mediacontent[j].setText("mediacontent url is = "
                                + mediacontentElement.getAttribute("url"));
    
                        Log.v("TAG","MEDIACONTENT: "+mediacontentElement.getAttribute("url"));
    
                        NodeList mediathumbnailList = secondElmnt
                                .getElementsByTagName("media:thumbnail");
                        Element mediathumbnailElement = (Element) mediathumbnailList
                                .item(0);
                        mediathumbnail[j].setText("mediathumbnail url is = "
                                + mediathumbnailElement.getAttribute("url"));
    
                        Log.v("TAG","MEDIATHUMBNAIL: "+mediathumbnailElement.getAttribute("url"));
    
                        layout.addView(mediacontent[j]);
                        layout.addView(mediathumbnail[j]);
                    }
    
                    layout.addView(id[i]);
                    layout.addView(published[i]);
                    layout.addView(content[i]);
                    layout.addView(title[i]);
    
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            /** Set the layout view to display */
    
            mScrView1.addView(layout);
            setContentView(mScrView1);
        }
    }
    

    Do not forget to do so within a thread or failing that, use these lines After the onCreate()

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
    .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    

提交回复
热议问题