1

我使用嵌入式 FOP 中继创建了一个 AFP 文件。由于 FOP Trunk 不支持直接在 root 下的 no-operation 标签,我需要修改创建的文件以添加 NOP 记录作为文件中的第一条记录。如何做到这一点?

4

2 回答 2

2

我建议将此作为 FOP 的增强请求。这很可能是完成这项工作的最现实的地方。

我不知道除 FOP 之外的任何 Java AFP 处理库。

于 2011-01-18T14:50:37.050 回答
0

如果您只需要在文件的开头记录一个,单个记录,您可能可以单独生成它,然后将两个文件连接在一起。(我假设“裸”AFP 记录,没有任何“变量块”/VB 包装)

请注意,AFP 记录的结构如下: 1 字节:x5a(校验字节);2字节:16位长度指示符,包括自身,但不包括“5a”字节;3字节:记录类型指示符;剩余字节:特定于记录的数据。

记录类型代码在此文档中: http: //afpcinc.org/site/assets/files/1073/ha3l3r04.pdf

这是 NOP 记录的布局(我认为 - 已经有一段时间了):

x5a + (big-endian/network order length) + xD3 xEE xEE + (EBCDIC) 字符串数据

例如,要将字符串“FOO=BAR”(ASCII 中的十六进制 [46 4f 4f 3d 42 41 52],EBCDIC 中的十六进制 [c6 d6 d6 7e c2 c1 d9])编码为 NOP:

字符串长度为 7,所以我们希望总长度为 2 + 3 + 7 = 12 (hex 0c)

所以,写:x5a + [00 0c] + [d3 ee ee] + [c6 d6 d6 7e c2 c1 d9]

最后,我知道这是错误的语言,但这里有一个非常好的 AFP 解析器:http: //metacpan.org/pod/Parse ::AFP ,它提供了工作记录布局定义,以防我忘记了NOP 记录。:-(

于 2012-12-08T20:53:39.400 回答