Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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

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 Spring引导XML更改根元素名称_Java_Xml_Spring_Spring Boot_Jackson Dataformat Xml - Fatal编程技术网

Java Spring引导XML更改根元素名称

Java Spring引导XML更改根元素名称,java,xml,spring,spring-boot,jackson-dataformat-xml,Java,Xml,Spring,Spring Boot,Jackson Dataformat Xml,我编写了一个spring引导应用程序来接受Http get请求并发送一个XML响应作为输出 <response xmlns=""> <userId>235</userId> <amount>345.0</amount> </response> 但是我得到了如下的响应作为输出 <CgPayment xmlns=""> <userId>235</userId>

我编写了一个spring引导应用程序来接受Http get请求并发送一个XML响应作为输出

<response xmlns="">
    <userId>235</userId>
    <amount>345.0</amount>
</response>
但是我得到了如下的响应作为输出

<CgPayment xmlns="">
    <userId>235</userId>
    <amount>345.0</amount>
</CgPayment>

235
345

如何更改根元素。响应类型为APPLICATION\u XML\u VALUE

是否尝试将类名更改为response??我认为你们的封送员是从班级的名字中得到名字的

我发现了这个(也许会有帮助)

如果type()是JAXBElement.class,则namespace()和name()指向 使用XmlElementDecl的工厂方法。XML元素名称是 工厂方法的XmlElementDecl注释中的元素名称,或者如果 来自其替换群的元素(它是其中的头元素) 已在XML文档中替换,则元素名称为 如果type()不是 类,那么XML元素名就是XML元素名 使用注释与类型静态关联 类型上的XmlRootElement。如果类型未使用 XmlElementDecl,那么这是一个错误。如果type()不是 类,则此值必须为“”


您使用的是特定于JAXB的注释,但Jackson需要整理您的响应。要使JAXB注释与Jackson一起工作,您必须在
pom.xml

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency>


您可以在类级别使用
@JacksonXmlRootElement(localName=“response”)


Javadoc:

试试
@JacksonXmlRootElement
。或者将
name
属性设置为
Response
xmlement
注释可以实现此目的。请看:我需要的是作为根节点名称的响应(起始字母很简单)。我已经改变了我的问题。谢谢。这应该是公认的答案。spring默认使用jackson,因此需要安装
JaxbAnnotationModule
来使用JAXB注释。从
2.9.0
开始,额外的依赖性也不再是必需的。这对我来说很有效,我在SpringBoot应用程序中添加了Bean依赖性
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency>
@Component
public class JacksonCustomizer implements Jackson2ObjectMapperBuilderCustomizer {
    @Override
    public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
        jacksonObjectMapperBuilder.modulesToInstall(new JaxbAnnotationModule());
}
@Bean
Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
    return (mapperBuilder) -> mapperBuilder.modulesToInstall(new JaxbAnnotationModule());
}