Xml JaxB解组单个基本元素

Xml JaxB解组单个基本元素,xml,jaxb,spring-batch,unmarshalling,jaxb2,Xml,Jaxb,Spring Batch,Unmarshalling,Jaxb2,我有一个如下所示的xml文件 <tag1> <intag1> <item> <aaa>sdfdfsf</aaa> <bbb>fvdfv</bbb> </item> </intag1> <intag2>3</intag2> </tag1> 例外情况:

我有一个如下所示的xml文件

<tag1>
    <intag1>
        <item>
            <aaa>sdfdfsf</aaa>
            <bbb>fvdfv</bbb>
        </item>
    </intag1>
    <intag2>3</intag2>
</tag1> 
例外情况:

[com.sun.istack.internal.SAXParseException2; lineNumber: 105; columnNumber: 25; unexpected element (uri:"", local:"intag2"). Expected elements are (none)]

这是由于类
int
java.lang.Integer
上缺少
javax.xml.bind.annotation

编辑(已删除旧解决方案)

通过执行以下操作,我只能映射

读者:

<batch:reader>
    <bean class="org.springframework.batch.item.xml.StaxEventItemReader">
        <property name="fragmentRootElementName" value="intag2" />
        <property name="resource" value="file:config/steps/test6.xml" />
        <property name="unmarshaller">
             <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
                  <property name="classesToBeBound">
                       <list>
                           <value>Intag2</value>
                       </list>
                  </property>
             </bean>
        </property>
    </bean>
</batch:reader>

看起来根元素也可以是一个简单的元素,可以同时读取。

嗨,伙计们,我找到了这样做的方法,并在这里发布,作为其他人的答案

我们需要创建一个带有
RootElement
注释的模型类,如下所示,并且应该给出
@XmlValue
标记,以指示元素的值应该映射到整数字段。就这样

@XmlRootElement(name = "intag2")
@XmlAccessorType(XmlAccessType.FIELD)
public class IV_TRAILER {

    @XmlValue
    private int value;

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}

我已经有了映射
intag1
的模型类,
intag1
可以重复1000多次,这就是我使用流媒体的原因。我不想将根级别的
tag1
元素映射到java对象,因为它会占用更多内存。您好@Thrax谢谢,我刚刚发布了另一个答案,请快速查看。
@XmlRootElement(name = "intag2")
public class Intag2 {

    private Integer intag2;

    @XmlElement(name = "intag2")
    public Integer getIntag2() {
        return intag2;
    }

    public void setIntag2(Integer intag2) {
        this.intag2 = intag2;
    }
}
@XmlRootElement(name = "intag2")
@XmlAccessorType(XmlAccessType.FIELD)
public class IV_TRAILER {

    @XmlValue
    private int value;

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}