我正在使用JAXB将XML编组为Java对象。我不知道如何将XML元素中的字符串解组到List中。这是我尝试过的:
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,而是空值。如果我将单词的类型从“列表”更改为“字符串”,则工作正常。是否可以从字符串转换为列表或数组?
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元素(单个元素)中获取String并将其拆分并存储在列表中。另一方面,问题是拆分XML字符串并将某些元素存储在列表中。
答案 0 :(得分:0)
最后,我找出了问题所在,找到了获取字符串数组而不是字符串列表的解决方案。
private String[] words;
@XmlElement(name="Words")
public void setWords(String[] words) {
/* Converting String to Array */
this.words = words[0].split(", ");
}
问题在于方法参数类型(String
)和变量类型(List<String>
)不相同。为了正确解析它应该是相同的。我已经将它们都更改为String[]
,并将我的逻辑设置为setter。现在,将XML中的字符串解析为String[]
。