J'ai créé un fichier AFP en utilisant le FOP Trunk intégré. Étant donné que FOP Trunk ne prend pas en charge la balise no-operation directement sous root, j'ai besoin de modifier le fichier créé pour ajouter un enregistrement NOP en tant que premier enregistrement dans le fichier. Comment est-que quelqu'un peut faire ça?Existe-t-il une manière nette d'ajouter des enregistrements NOP à un fichier AFP en utilisant Java?
Existe-t-il une manière nette d'ajouter des enregistrements NOP à un fichier AFP en utilisant Java?
Répondre
Je suggérerais d'élever ceci comme demande d'amélioration avec FOP. C'est probablement l'endroit le plus réaliste pour y arriver.
Je ne connais aucune bibliothèque de traitement Java AFP sauf celle de FOP.
Si vous n'avez besoin que d'un enregistrement unique au tout début du fichier, vous pouvez probablement le générer séparément, puis concaténer les deux fichiers ensemble. (Je suppose des enregistrements AFP "nus", SANS aucun enrobage "bloc variable"/VB)
Notez que les enregistrements AFP ont une structure comme celle-ci: 1 octet: x5a (octet de contrôle); 2 octets: indicateur de longueur de 16 bits, qui comprend lui-même, mais pas l'octet "5a"; 3 octets: indicateur de type d'enregistrement; octets restants: données spécifiques à l'enregistrement.
codes de type d'enregistrement sont dans ce document: http://afpcinc.org/site/assets/files/1073/ha3l3r04.pdf
Voici la mise en page pour un enregistrement de NOP (je pense - il a été un certain temps):
x5a + (big-endian/réseau longueur de commande) + xD3 xEE xEE + (EBCDIC) données de chaîne
Par exemple, pour coder la chaîne "FOO = BAR" (hex [46 4f 4f 3d 42 41 52] en ASCII, hex [c6 d6 d6 7e c2 c1 d9 ] dans EBCDIC) comme un NOP:
La longueur de la chaîne est 7, donc nous voulons une longueur totale de 2 + 3 + 7 = 12 (hex 0c)
donc écrire: X5a + [00 0c] + [d3 ee ee] + [c6 d6 d6 7e c2 c1 d9]
Enfin, je Je sais que c'est la mauvaise langue, mais il y a un assez bon analyseur AFP disponible ici: http://metacpan.org/pod/Parse::AFP, qui fournit des définitions de mise en page d'enregistrement de travail, au cas où j'ai oublié un champ dans l'enregistrement NOP. :-(
Cela semble être la meilleure réponse à long terme. – Roboprog