java - 如何使用map获取所有记录

标签 java

我试图显示所有记录,但它只显示最后一条记录,因为它的值每次都会被覆盖。如何解决这个问题?

File fXmlFile = new File("d:/formdata.xml");

            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);
            doc.getDocumentElement().normalize();

            System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
            NodeList nList = doc.getElementsByTagName("record");
            System.out.println("----------------------------");
            for (int temp = 0; temp < nList.getLength(); temp++) {

                Map<String, Object> map = new HashMap<String, Object>();
                Node nNode = nList.item(temp);

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

                    Element eElement = (Element) nNode;

                    map.put("Item No", eElement.getElementsByTagName("item_no").item(0).getTextContent());
                    map.put("Description", eElement.getElementsByTagName("description").item(0).getTextContent());
                    map.put("price", eElement.getElementsByTagName("price").item(0).getTextContent());
                    map.put("base qty", eElement.getElementsByTagName("base_qty").item(0).getTextContent());
                    map.put("Var qty", eElement.getElementsByTagName("var_qty").item(0).getTextContent());



                    generateCsvFile("E:\\testCSV.csv", map);
                }
              }

当调用generateCSVfile()时

private static void generateCsvFile(String sFilename, Map<String, Object> test) {
    try {
        FileWriter writer = new FileWriter(sFilename,true);

        Iterator iterator = test.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry mapEntry = (Map.Entry) iterator.next();
            System.out.println("key: " + mapEntry.getKey() + ", value:" + mapEntry.getValue());
            writer.append(mapEntry.getKey() + " = " + mapEntry.getValue());
            writer.append(",");
            iterator.remove();
        }
        writer.flush();
        writer.close();
    }

我们如何将所有值存储在 Map 中?

最佳答案

您需要的是将值列表传递给generateCSVfile()。现在,您只传递了一行。

一种方法是将所有 map 放入一个列表中,并将该列表传递给generateCSVfile。

但我建议您创建一个新类来保存这些值。假设一个名为 Row 的类将保存您的值,并将 List 传递给generateCSVfile()

关于java - 如何使用map获取所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19403627/

相关文章:

java - 将所有 Maven 库批量添加到 IntelliJ 中的类路径中

java - 使用 JGit 获取文件、修改内容并提交

java - Apache POI - 如何为 xlsx 创建工作簿

java - 注销问题!

java - 如何设置 netbeans 中的记录器将异常信息打印到文件?

java - 如何搜索 bytearray 是否包含其他数组中的元素

java - 将 FastSet 转换为字符串数组

java - 如何验证Java 8 Stream中是否包含两个特定元素?

java - 如何获取选择不同的结果作为实体列表而不是元组

java - 如何在从 JSON 反序列化期间忽略具有空值的属性