Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XStream(new StaxDriver()) without XML declaration

My program JAVA:

public static String toXml() {
KtpMessage ktpMessage =new KtpMessage();
ktpMessage.setdetails("test");
XStream xstream = new XStream(new StaxDriver());
String objectXml = xstream.toXML(ktpMessage);
return objectXml;

The result is :

<?xml version='1.0' encoding='utf-8'?><myclasses.Message><details>test</details></myclasses.Message>

my problem: I want to generate the "objectXml" but without <?xml version='1.0' encoding='utf-8'?> how can I do that ?

i want have this result:

<myclasses.Message><details>test</details></myclasses.Message>

thanks for your help

like image 706
user2235652 Avatar asked Jan 31 '26 22:01

user2235652


1 Answers

If you create your own StaxWriter you can use the constructor that tells it not to write the startDocument StAX event (which is what creates the XML declaration). Something like this (exception handling omitted):

StaxDriver drv = new StaxDriver();
XStream xstream = new XStream(drv);
StringWriter strWriter = new StringWriter();
StaxWriter sw = new StaxWriter(drv.getQnameMap(),
   drv.getOutputFactory().createXMLStreamWriter(strWriter),
   false, // don't do startDocument
   true); // do repair namespaces
xstream.marshal(ktpMessage, sw);
sw.close();
String objectXml = strWriter.toString();
like image 164
Ian Roberts Avatar answered Feb 03 '26 12:02

Ian Roberts



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!