Java/Kotlin中对象的XML解组
我想将一个xml字符串更改为一个对象,但它似乎一直在向我抛出错误,我不知道如何使用@XmlRootElement这些东西 尽管是用kotlin编写的,但只要查看/回复它,JAVA也可以 这里是XML字符串Java/Kotlin中对象的XML解组,java,xml,kotlin,jaxb,unmarshalling,Java,Xml,Kotlin,Jaxb,Unmarshalling,我想将一个xml字符串更改为一个对象,但它似乎一直在向我抛出错误,我不知道如何使用@XmlRootElement这些东西 尽管是用kotlin编写的,但只要查看/回复它,JAVA也可以 这里是XML字符串 <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid>
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx0b6dc231d20b379f1]]></appid>
<mch_id><![CDATA[1508319851]]></mch_id>
<nonce_str><![CDATA[mqy4nB6xGoyC1QPY]]></nonce_str>
<sign><![CDATA[2D9A3195E196F679D3916C5DC74754B4]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx2116190646297891sfae86747980208850875]]></prepay_id>
<trade_type><![CDATA[JSAPI]]></trade_type>
</xml>
这是我的代码,“xmlreturn”是xml字符串
这里是错误
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"xml"). Expected elements are <{}wxPayResult>
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:741)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:262)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:257)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:124)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1149)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:574)
javax.xml.bind.UnmarshaleException:意外元素(uri:,local:“xml”)。预期的要素是
位于com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:741)
位于com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:262)
位于com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:257)
位于com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:124)
位于com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1149)
位于com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.\u startElement(UnmarshallingContext.java:574)
我知道我可能需要在数据类中添加一些东西,但我不知道要添加什么。提前感谢。您的根元素的名称与您的xml根元素的名称不同,这也是消息提示的。它需要
wxPayResult
,但您给它一个xml
交付带有wxPayResult
作为根元素的XML,或者向XMLRootElement
提供name
,例如
@XmlRootElement(name = "xml")
您的根元素的名称与xml根元素的名称不同,这也是消息所建议的。它需要
wxPayResult
,但您给它一个xml
交付带有wxPayResult
作为根元素的XML,或者向XMLRootElement
提供name
,例如
@XmlRootElement(name = "xml")
可能重复的可能重复的可能重复的感谢您的回复,我确实尝试添加(name=“xml”),但它无法获取值,这意味着我在Person对象中获取了null中的所有属性。你知道为什么会发生这种情况吗?是的,每个元素都需要
@xmlement
。注意:如果名称也不同,您还可以提供名称
-属性。这是我得到的wat上的图片,您介意/知道我将如何@xmlement执行此操作吗?示例:@xmlement var return\u code:String?=空
。您可能需要切换到var
。刚刚测试过val
。您不需要var
,val
也可以。。。因此,这只取决于您是否要更改变量;-)感谢您的回复,我确实尝试添加了(name=“xml”),但它无法获取值,这意味着我在Person对象中获取了null中的所有属性。你知道为什么会发生这种情况吗?是的,每个元素都需要@xmlement
。注意:如果名称也不同,您还可以提供名称
-属性。这是我得到的wat上的图片,您介意/知道我将如何@xmlement执行此操作吗?示例:@xmlement var return\u code:String?=空
。您可能需要切换到var
。刚刚测试过val
。您不需要var
,val
也可以。。。因此,这只取决于您是否要更改变量;-)
@XmlRootElement(name = "xml")