Java:将格式化的xml文件转换为一行字符串

新手上路,请多包涵

我有一个格式化的 XML 文件,我想将它转换为一个行字符串,我该怎么做。

示例 xml:

 <?xml version="1.0" encoding="UTF-8"?>
<books>
   <book>
       <title>Basic XML</title>
       <price>100</price>
       <qty>5</qty>
   </book>
   <book>
     <title>Basic Java</title>
     <price>200</price>
     <qty>15</qty>
   </book>
</books>

预期产出

<?xml version="1.0" encoding="UTF-8"?><books><book> <title>Basic XML</title><price>100</price><qty>5</qty></book><book><title>Basic Java</title><price>200</price><qty>15</qty></book></books>

提前致谢。

原文由 Ianthe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答
//filename is filepath string
BufferedReader br = new BufferedReader(new FileReader(new File(filename)));
String line;
StringBuilder sb = new StringBuilder();

while((line=br.readLine())!= null){
    sb.append(line.trim());
}

使用 StringBuilder 比 concat 更有效 http://kaioa.com/node/59

原文由 ant 发布,翻译遵循 CC BY-SA 2.5 许可协议

使用 <xsl:output indent="no"><xsl:strip-space elements="*"/> 通过 XSLT 身份转换 运行它

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="no" />
    <xsl:strip-space elements="*"/>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

它将删除任何不重要的空格并产生您发布的预期输出。

原文由 Mads Hansen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题