gpt4 book ai didi

java - org.w3c.dom.Node 上的 getChildNodes() 仅返回 null 的 NodeLits

转载 作者:太空宇宙 更新时间:2023-11-04 14:32:51 25 4
gpt4 key购买 nike

我正在尝试解析配置文件,但是当我在排除的节点上调用 getChildNodes() 时,返回的 NodeList 包含 7 个空值,没有其他值。

我的代码:

public class MinNull {

private static final List<String> excludes = new ArrayList<>();

public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
File cfgFile = new File("ver.cfg");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(cfgFile);
Element rootElement = doc.getDocumentElement();
NodeList cfg = rootElement.getChildNodes();
parseConfig(cfg);
}

private static void parseConfig(NodeList cfg) {
for (int i = 0; i < cfg.getLength(); i++) {
Node node = cfg.item(i);
String name = node.getNodeName();
switch (name) {
case "excludes":
NodeList exc = node.getChildNodes();
for(int j = 0; j < exc.getLength();j++){
Node ex = exc.item(i);
System.out.println(ex);
if(ex != null && ex.getNodeName().equals("file")){
excludes.add(ex.getTextContent());
}
}
break;
}
}
}
}

我的xml文件(名为ver.cfg):

<?xml version="1.0" encoding="UTF-8"?>

<root>
<server>localhost</server>
<port>6645</port>
<project>MyApp</project>
<mainfile>MyApp.jar</mainfile>
<version>v1</version>
<excludes>
<file>Launcher.jar</file>
<file>Launch.bat</file>
<file>ver.cfg</file>
</excludes>
</root>

输出:

null
null
null
null
null
null
null

其他一切都正常工作。

最佳答案

您在中使用了错误的索引变量

Node ex = exc.item(i);

你应该在这里使用j

此时i = 5,并且子节点 5 不存在,因此您将得到 null 指示该节点不存在。

关于java - org.w3c.dom.Node 上的 getChildNodes() 仅返回 null 的 NodeLits,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25931967/

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