java - 如何在 Java 中迭代 Xml 文件并从中创建对象
问题描述
我有一个像这样迭代的 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中必须有一些简单的方法也可以将这些字符串作为键值对添加到列表中?
解决方案
这里:
List<String> list = new ArrayList<>();
如果您不想收集Strings,请这样说:
List<Map<String, String>> list = new ArrayList<>();
然后,而不是添加字符串:
list.add(identifier);
list.add(key2)
你可以这样做:
list.add(Collections.singletonMap(identifier, key2);
或类似的东西。
推荐阅读
- angular - 如何通过在角度中选择其他 mat-select 的值来过滤 mat-select
- javascript - Vue.js 中两个组件之间的路由
- google-data-studio - 如何在包含多年重复访客的列表中找到每年的新活动访客数量(Google Data Studio)?
- c++ - 将有符号 32 位整数与无符号 64 位整数相加
- c# - EF Core 5 - INavigation(重命名导航属性)
- c++ - 如何重用 Poco::Net::HTTPRequestHandler?
- python - Python:根据位置显示多张图像->显示图像时程序暂停
- javascript - 我如何要求 auth 访问某些组件?
- reactjs - 如何在 React 中的卡片中显示不同的图表
- asp.net-core - 在 Telerik 网格行中传递隐藏字段