java - try catch 内的 for 循环返回而不执行下一行

标签 java android xml xml-parsing

我有一个将 xml 字符串转换为列表数组的函数。当到达最后一个条件时,它跳转到函数的最后一个返回。

代码在 for 循环之后不执行 return 语句,并且不执行 for 循环之后的任何行。它只执行最后一个 return 语句。

函数如下所示

public List<List<String>> UpdateOrderDetailsTable(String xml) {
        List<List<String>> ll = new ArrayList<List<String>>();
        try {
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8"));
            Document doc = dBuilder.parse(is);
            doc.getDocumentElement().normalize();

            NodeList nList = doc.getElementsByTagName("ProductDetails");
            Log.i("1111",Integer.toString(nList.getLength()));
            if (nList.getLength() > 0) {


                // get all order details
                            //i=1 for neglect first tag
                for (int i = 1; i < nList.getLength(); i++) {

                    Node nNode = nList.item(i);


                    if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                        Element eElement = (Element) nNode;
                            List<String> l = new ArrayList<String>();
                            l.add(0, eElement.getElementsByTagName("OrderId").item(0).getTextContent());
                            l.add(1, eElement.getElementsByTagName("ProductId").item(0).getTextContent());
                            l.add(2, eElement.getElementsByTagName("ProductName").item(0).getTextContent());
                            l.add(3, eElement.getElementsByTagName("Model").item(0).getTextContent());
                            l.add(4, eElement.getElementsByTagName("Quantity").item(0).getTextContent());
                            ll.add(l);

                            Log.i(Integer.toString(i),eElement.getElementsByTagName("OrderId").item(0).getTextContent());

                    }

                }

                return ll;
            }
            Log.i("2222222222222222222","222222222222222222");
        } catch (Exception e) {
            Log.e("11111", e.toString());
        }
        return null;

    }

this is my xml

最佳答案

从您的代码中,可以推断出 for 循环后不会执行任何语句的唯一情况是您收到一些 EXCETPION。根据您的评论,您是说您在日志中没有看到任何异常。然后我怀疑你的记录器,为了测试的目的,尝试放置一些 Sysout 语句以确保记录器是正确的。您的 log.e() 方法可能无法正常工作,只需尝试将您的 log.i() 放入异常 block 中即可查看。

关于java - try catch 内的 for 循环返回而不执行下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16455351/

相关文章:

java - 设备旋转后布局重新启动

java - 打开 LED

java - java 中的多线程和异常处理的责任链

java - 库项目中的类出现奇怪的 ActivityNotFoundException

Android NDK C++ JNI(没有找到原生的实现......)

xml - XQuery 获取元素具有的所有属性的列表

Android - 如何仅向背景图像添加动画(放大)而不影响其他图像?

python - 从 XML 文档创建 DataFrame

java - Wicket 口中带有文件下载的提交按钮

java - 如何在 Java 中使用字符的 equals() 方法?