java - 从 Java 中的 XML 中删除 XML header

标签 java xml

StringWriter  writer = new StringWriter();
XmlSerializer serializer = new KXmlSerializer();
serializer.setOutput(writer);
serializer.startDocument(null, null);
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
// Creating XML

serializer.endDocument();
String xmlString = writer.toString();

在上述环境中,是否有任何标准 API 可用于删除 XML header <?xml version='1.0' ?>还是您建议通过字符串操作:

if (s.startsWith("<?xml ")) {
    s = s.substring(s.indexOf("?>") + 2);
}

想要 xmlString 中的输出没有 XML header 信息 <?xml version='1.0' ?> .

最佳答案

理想情况下,如果需要,您可以进行 API 调用以排除 XML header 。 KXmlSerializer 似乎并不支持这一点(略读代码 here )。如果你有一个 org.w3c.dom.Document(或者实际上是 javax.xml.transform.Source 的任何其他实现),你可以通过这种方式完成你想要的:

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));

否则,如果您必须使用 KXmlSerializer,看起来您将不得不操作输出。

关于java - 从 Java 中的 XML 中删除 XML header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5616452/

相关文章:

java - MongoDB 变更流

java - 如何移动 xmlns :xs and xmlns:xsi to Root Element with JAXB?

Android: ScrollView 中的两个图像

javascript - 使用 Ajax 或 Javascript 发送 XML 请求并从其他服务器接收 XML 响应

c# - 应该如何在 XML 中解释带有 CDATA 和空格的文本节点?

java - 使用 Jackson Mapper 将 JSON 数据映射到 Java POJO 类

OpenGL 2D 形状问题

java - 如何使在全局 applicationContext 的 Spring-MVC 应用程序中创建的 2 个 applicationContexts

java - 使用 JTextField 对象中的条件从 Access 数据库检索数据时出现问题

xml - 是否可以有一个具有多个命名空间的 XSD?