【问题标题】:reading XML response in android在android中读取XML响应
【发布时间】:2012-09-07 07:16:00
【问题描述】:

我正在尝试读取来自以下 url 的 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。

请帮忙

提前致谢

【问题讨论】:

  • 你能打印堆栈跟踪吗??
  • 是的,我认为你需要在这里显示 logcate

标签: java android xml http get


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2021-02-27
    • 2013-09-10
    相关资源
    最近更新 更多