Traitement de texte avec programme au lieu de Perl
-
05-07-2019 - |
Question
J'ai un fichier .plist qui ressemble à ceci:
<plist version="1.0">
<array>
<dict>
<key>name</key>
<string>Alabama</string>
<key>abreviation</key>
<string>AL</string>
<key>date</key>
<string>1819</string>
<key>population</key>
<string>4,627,851</string>
<key>capital</key>
<string>Montgomery</string>
<key>largestCity</key>
<string>Birmingham</string>
</dict>
....
</array>
</plist>
Je souhaite ajouter d'autres informations à la pliste, telles que la devise et le pseudo. Ils sont dans ce format:
<nickname>Yellowhammer State</nickname>
<nickname>The Last Frontier</nickname>
<nickname>The Grand Canyon State</nickname>
<nickname>The Natural State</nickname>
<nickname>The Golden State</nickname>
<nickname>The Centennial State</nickname>
<nickname>The Constitution State</nickname>
<nickname>The First State</nickname>
<nickname>The Sunshine State</nickname>
J'envisage de faire des recherches et de remplacer pour ajouter plus d'informations. Je pourrais aussi écrire un script Perl pour lire les pseudonymes et les ajouter au plist.
Mais existe-t-il un programme de traitement de texte qui me permettrait de parcourir les valeurs et de les insérer au bon endroit? J'ai effectué des recherches dans des processeurs de texte / éditeurs et je ne trouve pas ce que je recherche.
La solution
Cela ressemble à un travail pour XSLT: xsltproc sur Mac ou Linux. (ou SAXON, qui prend en charge XSLT 2.0)
[Vous ne mentionnez pas comment les surnoms du second fichier correspondent aux valeurs dans le premier fichier: sont-ils dans la séquence correspondante? ]
Autres conseils
Tout d'abord, je recommanderais de créer Plist 1.1 qui traite vos paires nom-valeur comme les entités associées qu'elles sont, par exemple:
<key name="capital" value="Montgomery" />
ou
<key>capital <value>Montgomery</value></key>
Il me semble que leur séparation rendrait tout traitement futur plus difficile à effectuer.
Vous avez besoin de plus de méta-informations à proximité du surnom pour que l'association apparaisse correctement, à moins que vous ne souhaitiez recevoir une invite pour chaque insertion. faire les surnoms comme
<nickname state="AL">Yellowhammer State</nickname>
vous donnerait tout ce dont vous avez besoin pour insérer facilement vos données au bon endroit dans n'importe quelle langue.