0

XMLMapper を使用して AIML コード (ほとんど XML と同じ) をデシリアライズしていますが、同じタグの下にテキストとタグを混在させるとこの問題が発生します。例:

<set name="setVar">
  <srai>FUNCTION1</srai>
  <srai>FUNCTION2<star index="1"/></srai>
</set>

私のJavaクラスの定義は次のとおりです。

@JacksonXmlRootElement(localName = "set")
public class Set {
    @JacksonXmlProperty(isAttribute = true, localName = "name")
    public String name;
    @JacksonXmlElementWrapper(useWrapping = false)
    @JacksonXmlProperty(localName = "srai")
    public List<Srai> srais;

    public Set() {
    }

    public Set(String name, List<Srai> srais) {
        this.name = name;
        this.srais = srais;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Srai> getSrais() {
        return srais;
    }

    public void setSrais(List<Srai> srais) {
        this.srais = srais;
    }
}

@JacksonXmlRootElement(localName = "srai")
public class Srai {
    @JacksonXmlElementWrapper(useWrapping = false)
    @JacksonXmlProperty(localName = "star")
    public List<Star> stars;
    @JacksonXmlText
    public String text;
    
    public Srai() {}
    
    public Srai(String text, List<Star> stars) {
        this.text = text;
        this.stars = stars;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public List<Star> getStars() {
        return stars;
    }

    public void setStars(List<Star> stars) {
        this.stars = stars;
    }
}

@JacksonXmlRootElement(localName = "star")
public class Star {
    @JacksonXmlProperty(isAttribute = true)
    public int index;
    
    public Star() {
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }
}

テキストのみまたはのみのコードをsraiにデシリアライズしようとすると、すべてが完全に機能し、テキストとタグを混在させると問題が発生します。

4

1 に答える 1