Anton Krivoshapkin
Anton Krivoshapkin

Reputation: 1

Caused by: javax.xml.bind.JAXBException: No package name is given

I cannot understand how to marshal data to XML. I always get this error:

Caused by: javax.xml.bind.JAXBException: No package name is given

Imports:

import org.apache.camel.CamelContext
import org.apache.camel.builder.RouteBuilder
import org.apache.camel.impl.DefaultCamelContext
import org.apache.camel.converter.jaxb.JaxbDataFormat

import javax.xml.bind.annotation.XmlElement
import javax.xml.bind.annotation.XmlRootElement

Class:

@XmlRootElement(name = "message")
class Message {
    @XmlElement(name = "content")
    String content

    Message() {}

    Message(String content) {
        this.content = content
    }
}

My code:

CamelContext context = new DefaultCamelContext()

// Настройка JaxbDataFormat
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat(Message.class.getPackage().getName())

context.addRoutes(new RouteBuilder() {
    @Override
    void configure() {
        // Маршрут для маршалинга строки в XML
        from("direct:start")
            .process { exchange ->
                Message message = new Message("Hello, World!")
                exchange.getIn().setBody(message)
            }
            .marshal(jaxbDataFormat)
            .to("file:output?fileName=message.xml&charset=utf-8")
            .log("Message object marshaled to XML and written to file")
    }
})

How to marshal data to XML?

Upvotes: 0

Views: 32

Answers (0)

Related Questions