关于ruby:如何修改.xfdl文件? (更新#1)

关于ruby:如何修改.xfdl文件? (更新#1)

How can I modify .xfdl files? (Update #1)

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

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

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


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

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

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

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

1
2
3
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"的文件。

另一种可能的解决方案-在此处

侧面说明:用引号引起来的块不适用于长字符串的代码


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

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

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

  • UUDeview主页
  • 使用XDFLengine
  • XDFL引擎入门

对不起,如果这对您没有帮助。


您不必非要这样做,可以使用Ruby中的Base64模块对文档进行编码,如下所示:

1
2
3
4
5
6
7
8
9
10
irb(main):005:0> require 'base64'
=> true

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


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

您可以使用内核#system调用gzip / gunzip:

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


推荐阅读