Perlの代わりにプログラムを使用したテキスト処理
-
05-07-2019 - |
質問
次のような .plist ファイルがあります。
<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>
モットーやニックネームなどの情報を plist に追加したいと考えています。それらは次の形式です。
<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>
検索と置換を行ってさらに情報を追加することを検討しています。Perl スクリプトを作成してニックネームを読み取り、plist に追加することもできます。
しかし、値を反復処理して正しい位置に挿入できるテキスト処理プログラムはあるのでしょうか?テキスト プロセッサ/エディタを使用して検索していますが、探しているものが見つかりません。
解決
これはXSLTの仕事のように見えます:MacまたはLinuxのxsltproc。 (またはXSLT 2.0をサポートするSAXON)
[2番目のファイルのニックネームがどのように一致するかは言及しません 最初のファイルの値に:それらは一致する順序ですか? ]
他のヒント
まず、名前と値のペアを関連エンティティと同様に扱う plist 1.1 を作成することをお勧めします。次に例を示します。
<key name="capital" value="Montgomery" />
または
<key>capital <value>Montgomery</value></key>
それらを分離すると、今後実行したい処理が難しくなるように思えます。
挿入ごとにプロンプトを表示しない限り、関連付けを正しい状態にするには、ニックネームの近くにさらにメタ情報が必要です。のようなニックネームを付ける
<nickname state="AL">Yellowhammer State</nickname>
これにより、任意の言語で適切な場所にデータを簡単に挿入するために必要なすべてが提供されます。
所属していません StackOverflow