Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SpringMVC使用Jaxb从Http Post Rest Web服务中解组xml?_Java_Xml_Spring_Spring Mvc_Jaxb - Fatal编程技术网

Java 如何使用SpringMVC使用Jaxb从Http Post Rest Web服务中解组xml?

Java 如何使用SpringMVC使用Jaxb从Http Post Rest Web服务中解组xml?,java,xml,spring,spring-mvc,jaxb,Java,Xml,Spring,Spring Mvc,Jaxb,我的SpringMVCWeb服务代码如下 模范班 @XmlRootElement(name="secretData") public class VData { private long lKId; @XmlElement(name="kId") public long getlKId() { return lKId; } public void setlKId(long lKI

我的SpringMVCWeb服务代码如下

模范班

@XmlRootElement(name="secretData")
public class VData {


        private long lKId;



        @XmlElement(name="kId")
        public long getlKId() {
            return lKId;
        }


        public void setlKId(long lKId) {
            this.lKId = lKId;
        }       
    }
控制器方法

@RequestMapping(value = "/vendor", method = RequestMethod.POST)
        public String addVendor(@RequestBody VData vData) {

            /*Checking recieved value*/
            System.out.println(vData.getlKId());//**Returning 0 value **
            return "Success";
        }
web服务的Xml请求体

<secretData>
    <kId>1</kId>
</secretData>

1.

我得到lKId中的“0”值。我哪里做错了。请提供使用@xmlement(name=“kId”)注释将xml元素绑定到对象成员的正确方法。

@RequestMapping
中添加
consumes=MediaType.APPLICATION\u xml\u VALUE
以告知控制器此方法将仅使用xml

    @RequestMapping(value = "/vendor", method = RequestMethod.POST, consumes = MediaType.APPLICATION_XML_VALUE) 
    public String addVendor(@RequestBody VData vData) {
        /*Checking recieved value*/ 
        System.out.println(vData.getlKId());//**Returning 0 value **
        return "Success"; 
    } 
当您通过http发布xml时,设置header
Content type:application/xml

要在SpringWebMVC中启用OXM(对象到xml的映射),Spring需要一个HttpMessageConverter,它可以读取/写入xml。Spring中有几个使用Jackson、XStream、JAXB等的实现

当Spring在类路径中检测到这些库之一时,它应该自动添加一个HttpMessageConverter。类路径上有JAXB库吗

您还可以手动将Jaxb2RootElementHttpMessageConverter注册为bean。通过JavaConfig,这看起来像:

@Bean
public HttpMessageConverter oxmHttpMessageConverter() {
return new Jaxb2RootElementHttpMessageConverter();
}

您必须在setter而不是getter上添加@xmlement注释。
@XmlAttribute注释必须放在getter上。

仍然不起作用。我认为必须进行解组。我不知道如何做。您遇到了什么错误?在类路径中需要有Jackson数据绑定JAR