【发布时间】:2018-11-30 12:34:42
【问题描述】:
我正在使用 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>
代码给了我 null 而不是 List。如果我将单词的类型从 List 更改为 String,那么它工作正常。是否可以从 String 转换为 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 元素(单个元素)获取字符串并将其拆分并存储在列表中。而另一方面,问题是拆分 XML 字符串并将一些元素存储在列表中。
【问题讨论】:
-
肯定有与
split(", ")和Array.asList的转换不同的问题。您的 xml 解析器是否正常工作?我只是尝试将String listAsString = "A, B, C, D"与您的Arrays.asList(words.split(", "))分开,并且成功了。 -
@Abhinav - 这是一个不同的问题。
-
@deHaar - 转换工作正常。但是在解析时并没有给出正确的结果。我应该在解析时错过了一些东西。有没有办法在 JAXB 中做到这一点?
-
请向我们展示您的解析代码...
标签: java xml-parsing jaxb