java - 没有 XML 声明的 XStream(new StaxDriver())

标签 java xml xml-parsing xml-serialization

我的程序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;

结果是:

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

我的问题: 我想生成“objectXml”但没有 <?xml version='1.0' encoding='utf-8'?> 我该怎么做?

我想要这样的结果:

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

谢谢你的帮助

最佳答案

如果您创建自己的 StaxWriter您可以使用构造函数告诉它不要编写 startDocument StAX 事件(这是创建 XML 声明的原因)。像这样(省略了异常处理):

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();

关于java - 没有 XML 声明的 XStream(new StaxDriver()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15762109/

相关文章:

java - BottomNavigationView 后退按钮无法正常工作

Python ElementTree XML IOError : [Errno 22] invalid mode ('rb' ) or filename

Java struts 从索引中获取属性

java - 为什么我在变量值上得到不同的结果?

xml - 如何使用 XSLT 重新格式化具有相关元素组的 XML

xml - 错误 : Could not find or load main class com. sun.tools.internal.xjc.XJCFacade

xml - CURL 无法通过命令行发送超过 1024 字节的发布数据

xml-parsing - 如何覆盖 TomEE 容器内的 'org.apache.cxf.stax.maxChildElements' 属性值?

java - 如何使用DOM在JAVA中向xml文件添加多个属性值

java - PowerMock java.lang.ClassCastException : sun.net.www.protocol.https.HttpsURLConnectionImpl 无法转换为 javax.net.ssl.HttpsURLConnection