如何修改.xfdl文件? (更新#1)

时间:2020-03-05 18:37:37  来源:igfitidea点击:

" .XFDL"文件扩展名标识" XFDL"格式的文档文件。这些属于基于XML的文档和模板格式标准。此格式与XML文件格式完全一样,但是包含用于安全通信的加密级别。

我知道如何使用在这里找到的文件查看器来查看XFDL文件。我还可以通过执行File:Save / Save As来修改和保存这些文件。但是,我想即时修改这些文件。有什么建议?这有可能吗?

更新#1:我现在已经成功解码了.xfdl并将其解压缩到XML文件中,然后可以对其进行编辑。现在,我正在寻找一种将修改后的XML文件重新编码回base64-gzip的方法(使用Ruby或者命令行)

解决方案

回答

如果编码是base64,那么这是我在Web链接上偶然发现的解决方案:

"解码以'encoding = base64'保存的XDFL文件。
使用以下文件保存的文件:

application/vnd.xfdl;content-encoding="base64-gzip"

是简单的以base64编码的gzip文件。通过先解码然后将其解压缩,可以轻松地将它们还原为XML。可以在Ubuntu上执行以下操作:

sudo apt-get install uudeview uudeview -i yourform.xfdl gunzip -S "" < UNKNOWN.001 > yourform-unpacked.xfdl

第一个命令将安装uudeview,这是一个可以对base64进行解码的软件包。一旦安装,我们可以跳过此步骤。

假设表单另存为" yourform.xfdl",由于xfdl文件不包含文件名,因此uudeview命令会将内容解码为" UNKNOWN.001"。 '-i'选项使uudeview不交互,请删除该选项以获得更多控制。

最后一条命令将解码后的文件压缩到名为" yourform-unpacked.xfdl"的文件中。
"

这里的另一种可能的解决方案

旁注:用引号引起来的<code>块不适用于长字符串

回答

我现在唯一能想到的答案是阅读uudeview手册。

尽管我想为我们提供帮助,但我不是这方面的专家,因此我们将不得不等待其他知识渊博的人来这里为我们提供帮助。

同时,我可以为我们提供一些文档的链接,这些文档可能会对我们有所帮助:

  • UUDeview主页
  • 使用XDFLengine
  • 开始使用XDFL引擎

抱歉,如果这样对我们没有帮助。

回答

我们不必离开Ruby即可执行此操作,可以在Ruby中使用Base64模块对文档进行编码,如下所示:

irb(main):005:0> require 'base64'
=> true

irb(main):007:0> Base64.encode64("Hello World")
=> "SGVsbG8gV29ybGQ=\n"

irb(main):008:0> Base64.decode64("SGVsbG8gV29ybGQ=\n")
=> "Hello World"

我们可以使用Kernel#system调用gzip / gunzip:

system("gzip foo.something")
system("gunzip foo.something.gz")