2009-09-10 7 views
1

Je dispose d'un fichier .plist qui ressemble à ceci:traitement de texte avec le programme au lieu de Perl

<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 veux ajouter plus d'informations à la plist, comme devise et surnom. 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> 

Je considère faire quelques recherches et remplacer pour ajouter plus d'information. Je pourrais aussi écrire un script perl pour lire les surnoms et les ajouter dans le plist. Mais y a-t-il un programme de traitement de texte qui me permettrait d'itérer sur les valeurs et de les insérer au bon endroit? J'ai cherché à travers les processeurs de texte/éditeurs et je ne trouve pas ce que je cherche.

Répondre

1

Cela ressemble à un travail pour XSLT: xsltproc sur Mac ou Linux. (ou SAXON, qui supporte XSLT 2.0)

[Vous ne mentionnez pas comment les surnoms dans le 2e match de fichier jusqu'à aux valeurs dans le premier fichier: sont-ils dans l'ordre correspondant? ]

+0

Oui, ils sont en séquence. Je vais regarder XSLT maintenant. – Bryan

0

Tout d'abord, je recommande de créer plist 1.1 qui traite vos paires de valeurs de nom comme les entités liées qu'elles sont, par exemple:

<key name="capital" value="Montgomery" /> 

ou

<key>capital <value>Montgomery</value></key> 

Il me semble que d'avoir les séparer de la façon dont vous avez fait tout traitement futur que vous voulez faire plus difficile.

Vous avez besoin de plus d'informations méta près du surnom pour que l'association soit correcte, sauf si vous souhaitez être invité à chaque insertion. faire les surnoms comme

<nickname state="AL">Yellowhammer State</nickname> 

vous donnera tout ce que vous devez insérer facilement vos données au bon endroit dans toutes les langues.

+0

Est-ce que ce format est autorisé dans les plistes? http://www.cakoose.com/wiki/plist_xml_is_pointless Comment accéder à vos valeurs et attributs en utilisant le cacao? – Bryan

+1

Désolé - je n'ai pas compris la signification de l'étiquette de plist. Vous êtes clairement coincé avec le schéma déjà défini pour plist. Je maintiens ma déclaration que les balises surnoms ont besoin de quelque chose pour vous permettre d'associer un surnom avec l'état correct. vous insérez l'en utilisant n'importe quelle langue que vous êtes confortable avec. Assurez-vous simplement d'utiliser les outils xml déjà fournis, c'est-à-dire n'écrivez pas votre propre analyseur xpath, en utilisant perl vous utiliserez XML :: LibXML ou XML :: Parser et XML :: XSLT. – DaveParillo

Questions connexes