Xml JaxB解组单个基本元素
我有一个如下所示的xml文件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> 例外情况:
<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;
}
}