1

我正在这样做,

JAXBContext jaxbContext = JAXBContext.newInstance(new Class[] { 
      mine.beans.ObjectFactory.class }); 
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
orderhistory = (OrderHistory) unmarshaller.unmarshal(new StreamSource(
      new StringReader(responseXML)));`

我得到了,javax.xml.bind.UnmarshalException: Unexpected element "OrderHistory". Expected elements are "{_http://orderhistory.shc.com/common/domain}OrderHistory".但我检查了我的 OrderHistory.java 我有

@XmlRootElement(name = "OrderHistory")
public class OrderHistory{

我错过了什么???

甚至 package-info.java 文件也存在

这是我的响应xml,
<?xml version="1.0" encoding="UTF-8"?>
<OrderHistory>
<guid>5555</guid>
<syNumber xsi:nil="true"></syNumber>
<email xsi:nil="true"></email>
<totalPages>0</totalPages>
</OrderHistory>

我仍然面临同样的问题???

我已经对我的 package-info.java 进行了更改,我已经删除了命名空间属性,但我仍然看到同样的问题,

@javax.xml.bind.annotation.XmlSchema() package mine.beans;

4

3 回答 3

2

看起来好像您的输入文档不是命名空间限定的。

你有:

<OrderHistory>...</OrderHistory>

您的 JAXB (JSR-222) 实现期望:

<OrderHistory xmlns="_http://orderhistory.shc.com/common/domain">...</OrderHistory>

有关的

如果您从 DOM 解组,请确保setNamespaceAware(true)调用DocumentBuilderFactory.

了解更多信息

于 2012-08-22T18:24:51.480 回答
0

作为提示。尝试从您的对象编组文档,并查看标签是否按预期写入。

于 2012-08-22T18:28:43.440 回答
0

您是否尝试修改您的 XML?您的 UNmarshaller 期望 OrderHistory-Element 成为“http://orderhistory.shc.com/common/domain”命名空间的一部分,但它不是。你可以试试这个:

<?xml version="1.0" encoding="UTF-8"?>
<OrderHistory xmlns="_http://orderhistory.shc.com/common/domain">
<guid>5555</guid>
<syNumber xsi:nil="true"></syNumber>
<email xsi:nil="true"></email>
<totalPages>0</totalPages>
</OrderHistory>
于 2012-08-24T06:30:24.723 回答