Java spring中的Jaxb2Marshaller解组-意外元素
我对使用Jaxb进行解组非常陌生,但我认为我已经正确配置了所有内容,但在运行时遇到了以下错误:Java spring中的Jaxb2Marshaller解组-意外元素,java,spring,jaxb,Java,Spring,Jaxb,我对使用Jaxb进行解组非常陌生,但我认为我已经正确配置了所有内容,但在运行时遇到了以下错误: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://xml.product.place.com/prod/alerts/v_1_0", local:"Record"). Expected elements are (none) 我使用JaxB基于一些XSD生成的POJO来解组一个相当复杂的XML文件 以下是XML的相
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://xml.product.place.com/prod/alerts/v_1_0", local:"Record"). Expected elements are (none)
我使用JaxB基于一些XSD生成的POJO来解组一个相当复杂的XML文件
以下是XML的相关部分:
<PlaceAlerts xmlns="http://xml.product.place.com/prod/alerts/v_1_0"">
<Information>
<ReportType>EIFK</ReportType>
<Number>401ZC00155</Number>
<ReportDate>2005-02-05</ReportDate>
</Information>
<Record>
<id>123</id>
<cid><![CDATA[12327*312457495]]></ccid>
...
</PlaceAlerts>
和bean声明:
<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="packagesToScan">
<list>
<value>com.etc.etc.etc.*</value>
</list>
</property>
</bean>
等等等等*
有什么想法吗?如果您还需要查看其他内容,请告诉我。我找到了问题,但没有找到问题的根本原因。我将“packagesToScan”属性更改为“classesToBeBound”属性。出于某种原因,我认为这些类没有被包模式匹配器接受。以下是我将其更改为:
<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.etc.etc.etc.Alert</value>
<value>com.etc.etc.etc.Channel</value>
etc...
</list>
</property>
</bean>
com.etc.etc.etc警报
com.etc.etc.频道
等
如果有人对packagesToScan为什么没有像我预期的那样工作有任何见解,我很乐意听到。为了使用“packagesToScan”,我相信package-info.java类应该出现在您的java包中,您已经从模式(XSD)生成了类。请发布XSD文件的相关部分。我在谷歌上搜索了你的问题,发现了这个问题,但是没有xsd部分,我无法给出答案,尽管我也遇到了同样的问题。你找到解决问题的方法了吗?
<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.etc.etc.etc.Alert</value>
<value>com.etc.etc.etc.Channel</value>
etc...
</list>
</property>
</bean>