Не удается распаковать файл XML - PullRequest
0 голосов
/ 09 декабря 2018

Совершенно новый для JavaFX здесь.У меня есть приложение, которое сохраняет и загружает данные веб-сайта в файл XML и из него.

Модель Website используется в ObservableList, и, как я понимаю, вы не можете прикрепить @XmlElement кObservableList, поэтому я добавил обертку для него (в основном, следуя этому уроку: https://code.makery.ch/library/javafx-tutorial/part5/).

Когда я пытаюсь его разархивировать, исключение выдается в этой строке кода:

        WebsiteListWrapper wrapper = (WebsiteListWrapper) um.unmarshal(file);

Здесьостальная часть моего кода:

MainApp.java:

public void loadWebsiteDataFromFile(File file) {

        try {
            JAXBContext context = JAXBContext.newInstance(WebsiteListWrapper.class);

            Unmarshaller um = context.createUnmarshaller();

            WebsiteListWrapper wrapper = (WebsiteListWrapper) um.unmarshal(file);
            System.out.println(um.unmarshal(file));
            websiteData.clear();
            websiteData.addAll(wrapper.getWebsites());

            setWebsiteFilePath(file);
        } catch (Exception e) {
            Alert alert = new Alert(AlertType.ERROR);
            alert.setTitle("Error");
            alert.setHeaderText("Could not load data");
            alert.setContentText("Could not load data from file:\n" + file.getPath());

            alert.showAndWait();
        }
    }

Website.java (Модель):

public class Website {

    private final StringProperty website;
    private final BooleanProperty accountExists;
    private final BooleanProperty keep;
    private final BooleanProperty delete;

    public Website() {
        this(null, true);
    }

    public Website(String website, boolean accountExists) {
        this.website = new SimpleStringProperty(website);
        this.accountExists = new SimpleBooleanProperty(accountExists);
        this.keep = new SimpleBooleanProperty(false);
        this.delete = new SimpleBooleanProperty(false);
    }


    public StringProperty websiteProperty() {
        return website;
    }

    public BooleanProperty hasAccountProperty() {
        return accountExists;
    }

    public BooleanProperty keepProperty() {
        return keep;
    }

    public BooleanProperty deleteProperty() {
        return delete;
    }

    public String getWebsite() {
        return website.get();
    }

    public boolean getAccountExists() {
        return accountExists.get();
    }

    public boolean getKeep() {
        return keep.get();
    }

    public boolean getDelete() {
        return delete.get();
    }


    public void setWebsite(String website) {
        this.website.set(website);
    }

    public void setAccountExists(boolean bool) {
        accountExists.set(bool);
    }

    public void setKeep(boolean bool) {
        keep.set(bool);
    }

    public void setDelete(boolean bool) {
        delete.set(bool);
    }

}

WebsiteListWrapper :

@XmlRootElement(name = "websites")
public class WebsiteListWrapper {

    private List<Website> websites;

    @XmlElement(name = "website")
    public List<Website> getWebsites() {
        return websites;
    }

    public void setPersons(List<Website> websites) {
        this.websites = websites;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...