Java 将数据从XML加载到列表
我使用JAXB创建了一个XML文件,输出如下:Java 将数据从XML加载到列表,java,xml,jaxb,Java,Xml,Jaxb,我使用JAXB创建了一个XML文件,输出如下: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <person> <data> <id>1000</id> <age>10</age> <values> <value>646.2</value&
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<data>
<id>1000</id>
<age>10</age>
<values>
<value>646.2</value>
<value>637.44</value>
</values>
<dates>
<date>2014-06-05</date>
<date>2014-06-04</date>
</dates>
</data>
<data>
<id>1001</id>
<age>10</age>
<values>
<value>546.4</value>
<value>541.5</value>
</values>
<dates>
<date>2014-06-05</date>
<date>2014-06-04</date>
</dates>
</data>
<data>
<id>1002</id>
<age>12</age>
<values>
<value>40.59</value>
<value>40.21</value>
</values>
<dates>
<date>2014-06-05</date>
<date>2014-06-04</date>
</dates>
</data>
</person>
我的javafx控制器类的一部分:
public void initializePersonTable() {
idCol.setCellValueFactory(new PropertyValueFactory<Person, String>("id"));
ageCol.setCellValueFactory(new PropertyValueFactory<Person, Integer>("age"));
}
加载保存的XML文件时,“id”和“age”将通过可观察列表添加到tableview中。加载文件后如何访问“值”和“日期”数据?我想使用这些数据来创建统计数据
如果我使用:
Person p = new Person();
System.out.println(p.getDates());
。。。我刚得到一个空列表返回新手问题。。。我自己找到了一个解决办法:
private void Test{
for (Person p : personTable.getItems()) {
System.out.println(p.getDates());
System.out.println(p.getValues());
}
您应该发布更多的代码,这样我们就可以看到问题所在,尤其是创建person实例会很有帮助。就这么做了。如果你需要更多的细节,请告诉我。谢谢
public ObservableList<Person> getPersonData() {
return this.pData;
}
public void loadFile (File file) {
JAXBContext jaxb = JAXBContext.newInstance(ListWrapper.class);
Unmarshaller um = jaxb.createUnmarshaller();
ListWrapper wr = (ListWrapper) um.unmarshal(file);
pData.clear();
pData.addAll(wr.getPerson());
}
public void initializePersonTable() {
idCol.setCellValueFactory(new PropertyValueFactory<Person, String>("id"));
ageCol.setCellValueFactory(new PropertyValueFactory<Person, Integer>("age"));
}
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
this.personTable.setItems(mainApp.getPersonData());
}
private void NewPersonButton(ActionEvent event) {
Person p = new Person();
p.setSymbol(personTF.getText()); // personTF = JavaFX Textfield
p.setWeight(Integer.parseInt(ageTF.getText())); // ageTF = JavaFX Textfield
mainApp.getPersonData().add(p);
}
Person p = new Person();
System.out.println(p.getDates());
private void Test{
for (Person p : personTable.getItems()) {
System.out.println(p.getDates());
System.out.println(p.getValues());
}