java - 使用 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");
}
}
解决方案
您没有使用 .getChildNodes() 方法沿标签向下遍历一层并围绕该层循环,这就是为什么它只是为您获取第一个节点的信息。访问这个链接,你可以找到一个很好的例子。
推荐阅读
- reactjs - 我在反应应用程序中的环境变量未定义
- php - Laravel:如果记录存在于两个表中的任何一个中,我如何检查并获取数据?
- netsuite - 向 NetSuite PDF 发票添加超链接?
- java - 匹配器结果 - 正则表达式
- java - 如何检查表中是否已存在索引?
- python - spark-submit log4j 配置在 spark 上下文中没有效果
- python - 有什么方法可以在 kivy python 中显示熊猫数据框
- ruby-on-rails - 使用 docker-compose 安装 Rails 应用程序时出现问题
- python - 提交后表格未清除
- netty - Netty - 围绕原生 FileDescriptor 创建 Channel 包装器