首页 > 解决方案 > 使用 Dom 解析器加载 XML 文件时出现问题

问题描述

我是 Java 编程新手,但在读取 XML 文件时遇到问题。我正在尝试使用 DOM 解析器从 XML 中保存信息。我将 xml 加载到文档中,然后尝试将无线电频道的所有时间表保存在 NodeList 中。但程序只是重复保存第一个节点的信息。我的代码哪里出了问题?

   NodeList episodeElement = doc.getElementsByTagName("schedule");

    for (int i = 0; i < episodeElement.getLength(); i++) {
        Node n = episodeElement.item(i);
        if (n.getNodeType() == Node.ELEMENT_NODE && getSize(doc) != 0) {
            Element e = (Element) n;
            String title = e.getElementsByTagName("title").item(i).getTextContent();
            NodeList nd = e.getElementsByTagName("description");
            String description;
            if (nd.getLength() > 0) {
                description = nd.item(i).getTextContent();
            }else {
                description = null;
            }
            String startTime = e.getElementsByTagName("starttimeutc").item(i).getTextContent();
            String endTime = e.getElementsByTagName("endtimeutc").item(i).getTextContent();
            Program prog = new Program(id, title, description, startTime, endTime);
            System.out.println(startTime);
            programs.add(i, prog);
        }
        else {
            System.out.println("No schedules found");
        }
    }

标签: javaxmlparsingdomnodelist

解决方案


您没有使用 .getChildNodes() 方法沿标签向下遍历一层并围绕该层循环,这就是为什么它只是为您获取第一个节点的信息。访问这个链接,你可以找到一个很好的例子。

https://www.youtube.com/watch?v=HfGWVy-eMRc


推荐阅读