首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓DOMParser

安卓DOMParser
EN

Stack Overflow用户
提问于 2014-08-13 07:39:56
回答 1查看 343关注 0票数 0

我学习如何为android使用DOm解析器,我使用示例androidHive.com的服务

"http://api.androidhive.info/pizza/?format=xml"

我使用URLCOnnection连接到一个服务器,它有一个用户名和密码连接,但它返回nullPointerException。

受保护的静态InputStream getInputStream( url ) { try{

代码语言:javascript
复制
 URLConnection UrlConn = url.openConnection();
 UrlConn.setDoInput (true);
    UrlConn.setRequestProperty ("trust",
            URLEncoder.encode(User,Pass);
    UrlConn .connect ();

    return UrlConn.getInputStream();



} catch (IOException e) {
    return null;
} catch (Exception e) {
    return null;
}

这是我的代码:

代码语言:javascript
复制
public static void domparser() throws Exception {
            //Get the DOM Builder Factory
         pizza=new ArrayList<HashMap<String,String>>(); 

         String urlN="http://api.androidhive.info/pizza/?format=xml";
         URL url=new URL(urlN);
         DocumentBuilderFactory factory = 
                DocumentBuilderFactory.newInstance();

            //Get the DOM Builder
            DocumentBuilder builder = factory.newDocumentBuilder();

            Document document = 
                      builder.parse(getInputStream(url));
            Element root = document.getDocumentElement();
            NodeList nodeList = root.getElementsByTagName("menu");

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

                Node node=nodeList.item(i);
               NodeList list=node.getChildNodes();



                for(int x=0;list.getLength()>x;x++){
                    //map=new HashMap<String,String>();
                    HashMap<String,String> map=new HashMap<String,String>();
                    Node element=list.item(x);
                    String name=element.getNodeName();
                    if (name.equalsIgnoreCase("id")){
                        map.put("Id",element.getFirstChild().getNodeValue().toString());
                    } else if (name.equalsIgnoreCase("name")){
                        map.put("name",element.getFirstChild().getNodeValue().toString());
                    }
                    pizza.add(map);
                    }

            }


     }
EN

回答 1

Stack Overflow用户

发布于 2014-08-17 14:23:48

您的http客户端代码会在网络访问期间抛出一个excetion,并在一个捕获块中返回空值吗?原因可能是:没有可用的internet连接,AndroidManifest.xml中缺少权限,使用了错误的请求方法,或者出现了超时问题。也许调试或记录请求代码、catch块和响应实体对于查找核心问题很有用。在文章中,使用ConnectivityManager系统服务和http连接检查internet连接的示例代码是可用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25280631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档