在android中读取XML响应

时间:2012-09-07 07:16:00

标签: java android xml http get

我正在尝试阅读以下网址的XML响应     http://sagt.vizushop.com/DefaultSimple.aspx?command=default

我在我的android项目中使用以下代码来获取第一个项目,然后获取其第二个节点的值。

String uri="http://sagt.vizushop.com/DefaultSimple.aspx?command=default";
String [] data=new String [9];
try{
    URL url = new URL(uri);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("GET");
    con.setDoOutput(true);

    con.connect();
    data = new String[9];
    if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {                        
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(con.getInputStream());
        NodeList itemnodes=doc.getElementsByTagName("item");
        Node firstitemnode=itemnodes.item(0);
        NodeList childnodesoffirstitemnode=firstitemnode.getChildNodes();
        Node firstnodeOffirstitem=childnodesoffirstitemnode.item(1);
        String contenturl=firstnodeOffirstitem.getNodeValue().toString();
        data[0] = contenturl;
    }

但它提供了java.lang.NullPointerException。

请帮助解决此问题

提前感谢

1 个答案:

答案 0 :(得分:1)

请使用以下代码使用Dom Parser进行XML解析。

public class XMLParsingDOMExample extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /** 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 imageurl[];

        try {

            URL url = new URL("http://sagt.vizushop.com/DefaultSimple.aspx?command=default");
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(url.openStream()));
            doc.getDocumentElement().normalize();

            NodeList nodeList = doc.getElementsByTagName("item");

            /** Assign textview array lenght by arraylist size */
            id = new TextView[nodeList.getLength()];
            imageurl = new TextView[nodeList.getLength()];

            for (int i = 0; i < nodeList.getLength(); i++) {

                Node node = nodeList.item(i);

                id[i] = new TextView(this);
                imageurl[i] = new TextView(this);

                Element fstElmnt = (Element) node;
                NodeList idList = fstElmnt.getElementsByTagName("item_id");
                Element idElement = (Element) idList.item(0);
                idList = idElement.getChildNodes();
                id[i].setText("id is = " + ((Node) idList.item(0)).getNodeValue());

                NodeList imageurlList = fstElmnt.getElementsByTagName("item_image");
                Element imageurlElement = (Element) imageurlList.item(0);
                imageurlList = imageurlElement.getChildNodes();
                imageurl[i].setText("imageurl is = " + ((Node) imageurlList.item(0)).getNodeValue());

                layout.addView(id[i]);
                layout.addView(imageurl[i]);
            }
        } catch (Exception e) {
            System.out.println("XML Pasing Excpetion = " + e);
        }

        /** Set the layout view to display */
        setContentView(layout); 
    }
}

有关详细信息,请参阅以下链接。

Dom Parsing Example