Как распаковать XML-строку в список, используя JAXB в Java - PullRequest
0 голосов
/ 30 ноября 2018

Я работаю над демаршализацией XML в java-объект, используя JAXB.Я не знаю, как распаковать строку в элементе XML в список.Вот что я попробовал:

    private List<String> words;

    public List<String> getWords() {
        return words;
    }

    @XmlElement(name="Words")
    public void setWords(String words) {
        /* Converting String to List */
        this.words = Arrays.asList(words.split(", "));
    }

Мой XML:

<Words>A, B, C, D</Words>

Вместо списка код дает мне ноль.Если я поменяю тип слов с List на String, то он работает нормально.Можно ли преобразовать строку в список или массив?

Код синтаксического анализа XML:

File file = new File("path\\to\\xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Myclass.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Myclass xmlContent = (Myclass) jaxbUnmarshaller.unmarshal(file);
System.out.println(xmlContent.getWords());

PS: другой связанный вопрос отличается от этого, здесь я пытаюсь получить строкуиз элемента XML (один элемент) и разделить и сохранить его в списке.Тогда как в другом вопрос заключался в разделении строки XML и сохранении некоторых элементов в списке.

1 Ответ

0 голосов
/ 06 декабря 2018

Наконец я выяснил проблему и нашел решение получить массив строк вместо списка строк.

private String[] words;

@XmlElement(name="Words")
public void setWords(String[] words) {
    /* Converting String to Array */
    this.words = words[0].split(", ");
}

Проблема заключалась в типе параметра метода (String) и типе переменной (List<String>) не были одинаковыми.Он должен быть таким же, чтобы правильно его разобрать.Я изменил их оба на String[] и включил свою логику в сеттер.Теперь строка в XML разбирается на String[].

...