当前位置:首页 > JAVA > 正文内容

Java Jaxb 反序列化Soap Xml的异常记录

高老师1年前 (2023-10-11)JAVA531
(1).先看看XML内容
<postsalescreateResponse
    xmlns="http://tempurl.org">
    <postsalescreateResult>
        <header>
            <responsecode>1000</responsecode>
            <responsemessage>[A00001-01-PS230925-2566-000009] PostSalesCreate - Sales doc. already exists.[20230925,A00001,01,PS230925-2566-000009]</responsemessage>

        </header>
        <salestotal>
            <txdate_yyyymmdd>20230925</txdate_yyyymmdd>
            <txtime_hhmmss>175607</txtime_hhmmss>

        </salestotal>
    </postsalescreateResult>
</postsalescreateResponse>
(2).查看实体类1:postsalescreateResponse
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "postsalescreateResponse", namespace = "http://tempurl.org", propOrder = {
        "postsalescreateResult"
})
public class PostsalescreateResponse {

    @XmlElement(name = "postsalescreateResult")
    private PostsalescreateResult postsalescreateResult;
    --- getTer Or setTer
}
(3).查看实体类2:postsalescreateResult
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "postsalescreateResult", propOrder = {
        "header",
        "salestotal"
})
public class PostsalescreateResult {

    @XmlElement(name = "header")
    protected Header header;

    @XmlElement(name = "salestotal")
    private Salestotal salestotal;
    
    --- getTer Or setTer
}
然后我获取到的PostsalescreateResult节点永远是null,之前通过序列化这样生成xml都是可以的,但是反序列化一直不可以,折腾太久了,最后在Google中查看到1个答案,反序列化的时候xml的命名空间namespace不支持继承,在反序列化的时候必须给每个子节点设置这个命名空间。我们完善下子节点的命名空间即可,例如:
@XmlElement(name = "header", namespace = "http://tempurl.org")
protected Header header;

@XmlElement(name = "salestotal", namespace = "http://tempurl.org")
private Salestotal salestotal;

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/647.html

分享给朋友:

“Java Jaxb 反序列化Soap Xml的异常记录” 的相关文章

java Character 类,java判断字符是否是一个字母,java判断字符是否是一个数字,java判断字符是否是一个空白,java判断字符是否是小写字母,java判断字符是否是大写字母,java转换字符为大写,java转换字符为小写

java Character 类,java判断字符是否是一个字母,java判断字符是否是一个数字,java判断字符是否是一个空白,java判断字符是否是小写字母,java判断字符是否是大写字母,java转换字符为大写,java转换字符为小写

java判断字符是否是一个字母System.out.println(Character.isLetter('a'));java判断字符是否是一个数字System.out.println(Character.isDigit('0'));java判断字符是否是一个空白Sy...

java日期和时间

java日期和时间

(1).java获取当前日期时间Date date = new Date();  System.out.println(date.toString());输出Fri Jul 02 10:29:55 CST 2021(2).java获取时间戳秒/毫秒D...

java正则表达式判断字符串是否包含,java判断字符串是否包含

java正则表达式判断字符串是否包含,java判断字符串是否包含

pattern表示正则表达式,接收正则表达式作为参数例子:String content = "my name is gaojiufeng"; String pattern = "....

java正则表达式捕获组

java正则表达式捕获组

java正则表达式的捕获组捕获组可以将匹配到的结果根据正则中的括号进行分组,这里变量我加了$符,php转java的坏习惯,懒得改了,能跑就行// 匹配字符串 String $line = "gaojiufeng 1994! ok?...

java lookingAt匹配字符串和java matches匹配字符串,java正则replaceAll,java正则replaceFirst

java lookingAt匹配字符串和java matches匹配字符串,java正则replaceAll,java正则replaceFirst

(4).java lookingAt匹配字符串和java matches匹配字符串lookingAt不要求整个字符串全匹配,例如me和me_you都是匹配的,但是lookingAt从第一个字符串开始匹配,匹配失败了也不会继续匹配,意味着me和you_me是无法匹配的matches匹配字符串要求全部匹...

java析构函数,java finalize()

java析构函数,java finalize()

java析构函数finalize()java进行垃圾回收时会调用finalize(),用户可以用它来关闭已经打开的资源句柄等操作,具体场景比较多。和php的析构函数__destruct差不多但是这个方法在最新版本的java中提示已经废弃了,好像java9中干掉了它...