你好,我是一个很新的编码,我现在读xml文件有点困难,我在Stackoverflow也是很新的,所以如果这个帖子错了,对不起。所以我得到了下面的代码。
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document config = builder.parse(new File(path + name));
NodeList nList = config.getElementsByTagName("title");
for(int i = 0; i < nList.getLength(); i++) {
Node Items = nList.item(i);
Element ItemElement = (Element) Items;
lines[i][0] = ItemElement.getElementsByTagName("content").item(0).getAttributes().getNamedItem("Content").getNodeValue();
color[i][0] = ItemElement.getElementsByTagName("content").item(0).getAttributes().getNamedItem("Color").getNodeValue();
}
} catch (ParserConfigurationException | IOException | SAXException e) {
e.printStackTrace();
}
我想读取的XML文件是:
<Config>
<title>
<content Color="green" Content="Hallo"/>
<content Color="red" Content="Hallo"/>
</title>
</Config>
现在的问题是,最后将有多达30行的内容,但它只读取第一行,忽略其他行.除了当我这样写。
<Config>
<title>
<content Color="green" Content="Hallo"/>
</title>
<title>
<content Color="red" Content="Hallo"/>
</title>
</Config>
任何想法?
你缺少一个循环,围绕着由 ItemElement.getElementsByTagName("content")
. 你可以修复它,例如,如下
for (int i = 0; i < nList.getLength(); i++) {
Node item = nList.item(i);
Element itemElement = (Element) item;
final NodeList contentNodes = itemElement.getElementsByTagName("content");
for (int j = 0; j < contentNodes.getLength() ; j++) {
lines[i][j] = contentNodes.item(j).getAttributes()
.getNamedItem("Content").getNodeValue();
color[i][j] = contentNodes.item(j).getAttributes()
.getNamedItem("Color").getNodeValue();
}
}
备注
Items
-> items
, ItemElement
-> itemElement