Reputation: 1
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