【问题标题】:How to iterate Xml file in Java and create objects from it如何在 Java 中迭代 Xml 文件并从中创建对象
【发布时间】:2021-02-01 13:14:43
【问题描述】:

我有一个像这样迭代的 Xml 文件:

List<String> list = new ArrayList<>();

for (int i = 0; i < nList.getLength(); i++) {

        Node nNode = nList.item(i);

        System.out.println("\nCurrent Element: " + nNode.getNodeName());

        if (nNode.getNodeType() == Node.ELEMENT_NODE) {

            Element elem = (Element) nNode;

            Node id = elem.getElementsByTagName("id").item(0);
            Node key = elem.getElementsByTagName("key").item(0);
            if (id.getTextContent().length() > 0) {
                String identifier = id.getTextContent();
                String key2 = key.getTextContent();

                System.out.println("id: " + identifier);
                System.out.println("key: " + key2);

                list.add(identifier);
                list.add(key2);

            }
        }
    }

这行得通,如您所见,我可以将值添加到字符串列表中,但这不是我想要做的。我想从这些字符串值中创建一个对象列表,例如:

[{"id": identifier, "key" : key2}].

我尝试了很多方法,但似乎没有任何效果,Java中必须有一些简单的方法也可以将这些字符串作为键值对添加到列表中?

【问题讨论】:

  • “我尝试了很多方法” 这些方法中的任何一种实际上是否涉及创建具有idkey 两个字段的类?如果是这样,请编辑问题并向我们展示该尝试。如果没有,如果您没有对象的类,您为什么希望能够创建对象列表?
  • 仅供参考: 您可能想研究一下 JAXB,它是一个用于将 XML 映射到对象的库。它实际上是在 Java 8 及更早版本中内置的,但您现在必须自己将其添加到类路径中。
  • 谢谢@Andreas,我创建了一个类来存储这些值并且做对了。

标签: java arrays spring object


【解决方案1】:

这里:

List<String> list = new ArrayList<>();

如果你不想收集字符串,那么就这么说吧:

List<Map<String, String>> list = new ArrayList<>();

然后,而不是添加字符串:

list.add(identifier);
list.add(key2)

你可以这样做:

list.add(Collections.singletonMap(identifier, key2);

或类似的东西。

【讨论】:

  • @MostowskiCollapse 完成,没有得到你的问题的上下文。
猜你喜欢
  • 1970-01-01
  • 2012-07-13
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
相关资源
最近更新 更多