我使用以下代码通过 JAXB 取消绑定 XML。responseXML 包含从 Web 服务调用返回的 XML 字符串。
StringReader reader = new StringReader(responseXML);
jaxbContext = JAXBContext.newInstance(TestResponse.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object idResponse = unmarshaller.unmarshal(reader);
以下是取消编组时发生的异常。
javax.xml.bind.UnmarshalException
- with linked exception:
[Exception [EclipseLink-25004] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: An error occurred unmarshalling the document
Internal Exception: java.lang.IllegalArgumentException: ]
有人帮忙解决这个问题。
下面是从XSD自动生成的TestACK类
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"responseCode",
"responseDescription",
"responsemessage"
})
@XmlRootElement(name = "TestResponse")
public class TestResponse {
@XmlElement(required = true)
protected String responseCode;
@XmlElement(required = true)
protected String responseDescription;
protected String responsemessage;
/**
* Gets the value of the responseCode property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getResponseCode() {
return responseCode;
}
/**
* Sets the value of the responseCode property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setResponseCode(String value) {
this.responseCode = value;
}
/**
* Gets the value of the responseDescription property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getResponseDescription() {
return responseDescription;
}
/**
* Sets the value of the responseDescription property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setResponseDescription(String value) {
this.responseDescription = value;
}
/**
* Gets the value of the responsemessage property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getResponsemessage() {
return responsemessage;
}
/**
* Sets the value of the responsemessage property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setResponsemessage(String value) {
this.responsemessage = value;
}
}
下面是示例XML
<a:TestResponse xmlns:a="http://esm.mtn.co.za/data/commonbusiness/TestValidate">
<a:responseCode>0</a:responseCode>
<a:responseDescription>Success</a:responseDescription>
<a:responsemessage>Success</a:responsemessage>
</a:TestResponse>
我认为XML中的名称空间导致了解析问题。尝试在包信息中指定命名空间。java,并在其中提到前缀“a”。您可以在这里查看更多信息。
你可以在这里检查类似的问题
我为基本上是Bèzier路径的创建了一些。为此,我转换了类型为和的路径元素,为此我还有转换器: 我有一个测试代码: 混搭路径时创建的文件如下所示,这是我基本上想要的: 但是,在解组XML时,我遇到了这个异常: PathConverter中的第52行指向该行(在for循环中的第一次调用): 我的猜测是,这个问题与方法上的和方法有关,这样读者仍然处于它期望的结束节点的状态。对于其他两个转换器,我也有测
在运行gradlew测试时得到了这个错误: 第二次成功了。
问题内容: 试图通过类强制转换异常在这里: 抛出此异常: 我不明白这一点-因为该类是由xjc.bat工具生成的-并且它生成的类我完全没有改变-所以这里应该没有强制转换问题- 解组员应该真的给了我一个类可以强制转换为FooClass。 关于我在做什么错的任何想法吗? 问题答案: 是否有注释?如果没有,请尝试: 这基于非官方的JAXB指南。
我目前正试图使用JAXB将一些XML解组到一个java对象中,我得到了一个奇怪的空指针异常。这只是解组时的一个问题。我可以很好地处理这些类。以下是相关的代码片段(不相关的部分用“…”表示): > JAXB根元素: 根元素的Images子元素: 解组XML的逻辑: 最后,我试图散集的XML(知道这个xml文件实际上是使用JAXB封送器生成的,运行起来没有任何问题可能会有所帮助): 好的,这就是所有相
我试图解组xml导致saxparser异常,因为元素的值有一个未正确关闭的标记元素。这是我得到的,我必须处理的。 这里是示例xml- 上面的xml和其他字符串一起作为命令的值,标签没有正确关闭,导致以下异常- [org.xml.sax.saxpasseeption;行号:1;列号:212;元素类型“ctag”后面必须跟有属性规范,” 将xml输入作为字符串阅读器提供给unMarshall 我有两个
我的项目是客户端/服务器,客户端发送一个对象到服务器,服务器响应,所有这些都是通过RMI 客户项目 //接口 //我需要把它发给的班级 //客户端 //服务器项目 //接口公共接口RMI_接口扩展了远程{ //类,我将发送和接收它公共类Employee实现可序列化的{int ID; //类来保存所有接收到的对象公共类Maneger{ //服务器公共类RMI_server扩展了UnicastRemo