不能用java加载一个xml,因为我需要它(初学者)。

问题描述 投票:-1回答:1

你好,我是一个很新的编码,我现在读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>

任何想法?

java xml
1个回答
0
投票

你缺少一个循环,围绕着由 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();
        }
      }

备注

  • Java中的变量名应以小写字母开头,如 Items -> items, ItemElement -> itemElement
© www.soinside.com 2019 - 2024. All rights reserved.