【问题标题】:How to unmarshel XML String to List using JAXB in Java如何在 Java 中使用 JAXB 将 XML 字符串解组为列表
【发布时间】: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


【解决方案1】:

我终于找到了问题所在,并找到了获取字符串数组而不是字符串列表的解决方案。

private String[] words;

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

问题是方法参数类型(String)和变量类型(List&lt;String&gt;)不一样。为了正确解析它应该是相同的。我已将它们都更改为 String[] 并将我的逻辑放入 setter。现在XML中的字符串被解析成String[]

【讨论】:

    猜你喜欢
    • 2018-01-06
    • 1970-01-01
    • 2015-03-25
    • 2017-04-28
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    相关资源
    最近更新 更多