Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX-使用XML中的数据填充FXML TableView_Java_Xml_Javafx - Fatal编程技术网

JavaFX-使用XML中的数据填充FXML TableView

JavaFX-使用XML中的数据填充FXML TableView,java,xml,javafx,Java,Xml,Javafx,我试图用XML中的数据填充JavaFX中的TableView。基本上,我正在解析来自XML的数据&试图用来自XML的数据设置tableview。 然而,我在我提出的代码中遇到了一些问题。下面是我的XML文件的格式 XML文件 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Root> <xpression> <Environment> <ProjectName>AB

我试图用XML中的数据填充JavaFX中的TableView。基本上,我正在解析来自XML的数据&试图用来自XML的数据设置tableview。 然而,我在我提出的代码中遇到了一些问题。下面是我的XML文件的格式

XML文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Root>
<xpression>
<Environment>
    <ProjectName>ABC</ProjectName>
    <EnvironmentName>ABC Server</EnvironmentName>   
    <ServerURL>abcc.com:8080</ServerURL>
    <SetDefault>Yes</SetDefault>
</Environment>
<Environment>
    <ProjectName>XYZ</ProjectName>
    <EnvironmentName>XYZ Server</EnvironmentName>
    <ServerURL>xyz.com:8080</ServerURL>
    <SetDefault>No</SetDefault>
</Environment>
</xpression>
</Root>
基本上,当我试图在parseXML()中设置表数据时,它正在设置TableView中XML文件中环境标记的第二个实例的值,跳过第一个实例。请参见下面的屏幕截图:


我尝试了各种各样的方法,但都不管用。有人能指出错误或者给出用XML值填充JavaFX TableView的解决方案吗?

您需要在
for
循环中创建
数据源
的新实例,否则您将总是将相同的引用添加到
可观察列表

这样做:

public class DataSource {
    public SimpleIntegerProperty serialNo = new SimpleIntegerProperty();
    public SimpleStringProperty projectName = new SimpleStringProperty("");
    public SimpleStringProperty environment = new SimpleStringProperty("");
    public SimpleStringProperty serverURL = new SimpleStringProperty("");
    public SimpleStringProperty defaultValue = new SimpleStringProperty("");

    public DataSource(){
        this(1,"","","","");
    }

    public DataSource(int serial, String projectName,String envName, String serverURL, String defaultValue){
        setSerialNo(serial);
        setEnvironment(envName);
        setProjectName(projectName);
        setServerURL(serverURL);
        setDefaultValue(defaultValue);
    }

    public Integer getSerialNo(){
        return serialNo.get();
    }

    public void setSerialNo(Integer serialNum){
        serialNo.set(serialNum);
    }

    public String getProjectName(){
        return projectName.get();
    }

    public void setProjectName(String prjName){
        projectName.set(prjName);
    }

    public String getEnvironment(){
        return environment.get();
    }

    public void setEnvironment(String envName){
        environment.set(envName);
    }

    public String getServerURL(){
        return serverURL.get();
    }

    public void setServerURL(String serverUrl){
        serverURL.set(serverUrl);
    }

    public String getDefaultValue(){
        return defaultValue.get();
    }

    public void setDefaultValue(String defaultInd){
        defaultValue.set(defaultInd);
    }
}
for(int i = 0; i < nList.getLength(); i++){
    DataSource ds = new DataSource();
DataSource ds = new DataSource();
...
for(int i = 0; i < nList.getLength(); i++){
for(int i=0;i
而不是:

public class DataSource {
    public SimpleIntegerProperty serialNo = new SimpleIntegerProperty();
    public SimpleStringProperty projectName = new SimpleStringProperty("");
    public SimpleStringProperty environment = new SimpleStringProperty("");
    public SimpleStringProperty serverURL = new SimpleStringProperty("");
    public SimpleStringProperty defaultValue = new SimpleStringProperty("");

    public DataSource(){
        this(1,"","","","");
    }

    public DataSource(int serial, String projectName,String envName, String serverURL, String defaultValue){
        setSerialNo(serial);
        setEnvironment(envName);
        setProjectName(projectName);
        setServerURL(serverURL);
        setDefaultValue(defaultValue);
    }

    public Integer getSerialNo(){
        return serialNo.get();
    }

    public void setSerialNo(Integer serialNum){
        serialNo.set(serialNum);
    }

    public String getProjectName(){
        return projectName.get();
    }

    public void setProjectName(String prjName){
        projectName.set(prjName);
    }

    public String getEnvironment(){
        return environment.get();
    }

    public void setEnvironment(String envName){
        environment.set(envName);
    }

    public String getServerURL(){
        return serverURL.get();
    }

    public void setServerURL(String serverUrl){
        serverURL.set(serverUrl);
    }

    public String getDefaultValue(){
        return defaultValue.get();
    }

    public void setDefaultValue(String defaultInd){
        defaultValue.set(defaultInd);
    }
}
for(int i = 0; i < nList.getLength(); i++){
    DataSource ds = new DataSource();
DataSource ds = new DataSource();
...
for(int i = 0; i < nList.getLength(); i++){
DataSource ds=newdatasource();
...
对于(int i=0;i
非常感谢@NicolasFilotto。解决方案真的很有效。感谢您指出这一变化。