gpt4 book ai didi

java - 用 Java 解析 XML 文件以获取名称列表

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:50 26 4
gpt4 key购买 nike

我目前正在开发 Android 应用程序,这意味着要学习 Java。我已经用 Python 玩了几年,但现在我有了一部 Android 手机,我决定是时候加强了。该应用基本上显示存储在本地 XML 文件中的视频游戏列表。现在,XML 文件的结构基本上是游戏>游戏(多个)>名称(加上其他现在不重要的东西)。我目前正在尝试获取游戏名称列表。我查阅了教程和信息,但似乎都不是我所需要的。我想真正了解它是如何工作的,而不仅仅是有一段我可以复制/粘贴的工作代码。另外,请记住,名称列表必须以字符串数组的形式结束,Android 才能使用它。这是我现在拥有的功能(从教程中复制/粘贴并进行了大量编辑,因此它不可读。一旦它实际工作我会修复它。)现在 ListView 显示为空。至少比以前好多了,而且不会再崩溃了...

public static String[] parse(String filename) {
ArrayList<String> gamesList = new ArrayList<String>();

try {
File file = new File(filename);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("game");

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

Node fstNode = nodeList.item(s);

//if (fstNode.getNodeType() == Node.ELEMENT_NODE) {

Element name = (Element) fstNode;
Element fstElmnt = (Element) fstNode;
NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("name");
Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
NodeList fstNm = fstNmElmnt.getChildNodes();

gamesList.add(fstNmElmnt.toString());
//}

}
} catch (Exception e) {
e.printStackTrace();
}
String[] gamesArray;
gamesArray = (String[]) gamesList.toArray(new String[0]);
return gamesArray;
}

最佳答案

在你的代码中,当你将fstNmElmnt.toString()添加到gameList时,它就是游戏标签对应的Element。假设您的 XML 是结构化的 Joe ,那么您需要获取第一个子元素的值(而不是为元素本身调用 toString()):

gamesList.add(fstNmElmnt.getFirstChild().getNodeValue());

顺便说一句,除非你的文档的其他部分有 标签,或者在这个阶段需要 元素进行其他处理,你可以使用下面(更简单)的代码:

NodeList nodeList = doc.getElementsByTagName("name");
for (int s = 0; s < nodeList.getLength(); ++s) {
gamesList.add(nodeList.item(s).getFirstChild().getNodeValue());
}

关于java - 用 Java 解析 XML 文件以获取名称列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com