Как я могу изменить файлы .xfdl? (Обновление №1)

Расширение файла .XFDL идентифицирует файлы XFDL Formatted Document. Они относятся к стандарту XML и стандарту форматирования шаблонов. Этот формат в точности похож на формат файла XML, однако он содержит уровень шифрования для использования в защищенной связи.

Я знаю, как просматривать файлы XFDL с помощью средства просмотра файлов. Я нашел здесь. Я также могу изменить и сохранить эти файлы, выполнив File: Save/Save As. Однако я бы хотел изменить эти файлы на лету. Какие-либо предложения? Возможно ли это?

Обновление №1: теперь я успешно декодировал и распаковал a .XFDL в XML файл, который затем могу редактировать. Теперь я ищу способ перекодировать измененный файл XML обратно в base64-gzip (используя Ruby или командную строку)

Ответ 1

Если кодировка base64, то это решение, на которое я наткнулся в Интернете ссылка:

"Декодирование XDFL файлов, сохраненных с помощью 'encoding = base64'. Файлы, сохраненные с помощью:

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

- простые файлы gzip с кодировкой base64. Они могут быть легко восстановлены в XML с помощью первого декодирования и затем разархивированы. Это можно сделать следующим образом: Ubuntu:

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

Первая команда установит uudeview, пакет, который может декодировать base64 и другие. Вы можете пропустить этот шаг после его установки.

Предполагая, что ваша форма сохранена как "yourform.xfdl", команда uudeview расшифровывает содержимое как "UNKNOWN.001", так как файл xfdl не содержит имени файла. Параметр "-i" делает uudeview неинтерактивным, удалите эту опцию для большего контроля.

Последняя команда запускает декодированный файл в файл с именем 'yourform-unpacked.xfdl'. "

Другое возможное решение - здесь

Боковое примечание: Блок, цитируемый <code> не работает для длинных строк кода

Ответ 2

Единственный ответ, о котором я могу сейчас подумать, - прочитать руководство для uudeview.

Насколько я хотел бы вам помочь, я не являюсь экспертом в этой области, поэтому вам придется подождать, пока кто-нибудь более осведомлен, чтобы спуститься сюда и помочь вам.

Между тем я могу дать вам ссылки на некоторые документы, которые могут вам помочь:

Извините, если это вам не поможет.

Ответ 3

Вам не нужно выбраться из Ruby для этого, можете использовать модуль Base64 в Ruby для кодирования документа следующим образом:

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"

И вы можете вызвать gzip/gunzip с помощью системы Kernel #:

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