【问题标题】:JDOM2 Outputter inserting 4 errant bytes at start of XML fileJDOM2 输出器在 XML 文件的开头插入 4 个错误字节
【发布时间】:2021-07-11 16:49:23
【问题描述】:

我正在使用 Java 8 和 JDOM 2.0.6 (Mac-Yosemite + Eclipse) 来生成 XML 文件。

文件的序言在 之前带有这些字节

C2 A8 C3 8C

我正在使用 XMLOutputter.output() 来写出文档。当我将输出定向到控制台时,它会正确输出。当将输出定向到文件时,我插入了错误的字节。

相关代码: `

private Document outputDoc = new Document();

outputDoc.setRootElement(new Element("GraphicalAlgorithm_" + challengeID, DFG2D_NAMESPACE));        
outputDoc.getRootElement().addContent(..my Element...);

XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());

//TEST ONLY: writes to console
xmlOutputter.output(outputDoc, System.out);

xmlOutputter.output(outputDoc, fileStream);;

`

我被这个难住了。

【问题讨论】:

    标签: jdom-2


    【解决方案1】:

    我通过复制和粘贴我之前用于序列化 (.ser) 文件输出的“文件输出”方法进入了这个雷区。

    错误的 4 字节是 Java 序列化标记到 FileOutpuStream 中的“魔术 ID”,该文件之前已附加到 ObjectOutputStream(用于序列化输出调用的专用输出器,例如“writeObject(obj)”。可能假设您必须实际调用“writeOutput(obj)”让序列化程序以这种方式标记文件,但不是。

    可以在此处找到完整的分析/撰写和修复:

    https://github.com/hunterhacker/jdom/issues/193

    【讨论】:

      猜你喜欢
      • 2014-06-25
      • 2019-03-26
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多