gpt4 book ai didi

java - 无法使用 JAXB 读取 XML 文件

转载 作者:行者123 更新时间:2023-12-02 05:03:31 24 4
gpt4 key购买 nike

我正在尝试读取下面的 XML 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<parts>
<item>CPU</item>
<item>GPU</item>
<item>PSU</item>
</parts>

我的目标是将项目添加到 DefaultDataModel,以便我可以更新 JList。但是,当我进入 for every 循环时,列表​​中没有添加任何内容,控制台也没有打印任何内容。有人可以告诉我我是否做错了什么吗?

public void load()
{
// First clear the JLit before loading anything
partList.clear();
chosenList.clear();

File file = new File("partsList.xml");

try
{
// Setup JAXB to create a list of strings from the XML file
JAXBContext context = JAXBContext.newInstance(Parts.class);
Unmarshaller unmarshaller = context.createUnmarshaller();

// Read the XML file
List<String> parts = (List<String>) unmarshaller.unmarshal(file);
System.out.println(parts);

for (String item : parts)
{
chosenList.addElement(item);
System.out.println(item);
}

list_1.setModel(chosenList);
list_1.repaint();
}

catch (JAXBException e)
{
e.printStackTrace();
}
}

Parts.java

@XmlRootElement
public class Parts extends AbstractList<String>
{
/* This allows me to have a single instantiation of this class for
* adding the PC components before writing them to the XML file
*/

@XmlElement(name="item")
private List<String> list = new ArrayList<String>();

@Override
public boolean add(String element)
{
return list.add(element);
}

@Override
public String get(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
}

最佳答案

首先,您的 Parts 类不完整。应实现 get 和 size 方法。

@Override
public String get(int arg0) {
return list.get(arg0);
}

@Override
public int size() {
return list.size();
}

然后,解码会为您提供一个 Parts 对象,而不是字符串列表。所以,应该是:

Parts parts = (Parts) unmarshaller.unmarshal(file);
System.out.println(parts);

for (int i = 0; i < parts.size(); i++) {
chosenList.addElement(parts.get(i));
System.out.println(parts.get(i));
}

关于java - 无法使用 JAXB 读取 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28017597/

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