Обработка текста с помощью программы Вместо Perl

StackOverflow https://stackoverflow.com/questions/1407555

  •  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>

Я хочу добавить больше информации в список, такой как девиз и ник.Они представлены в таком формате:

<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-скрипт для чтения псевдонимов и добавления их в список.

Но есть ли программа обработки текста, которая позволила бы мне перебирать значения и вставлять их в нужное место?Я просматривал текстовые процессоры / редакторы и не могу найти то, что я ищу.

Это было полезно?

Решение

Это похоже на работу для XSLT: xsltproc на Mac или Linux. (или SAXON, который поддерживает XSLT 2.0)

[Вы не упоминаете, как совпадают псевдонимы во втором файле к значениям в первом файле: они в соответствующей последовательности? ]

Другие советы

Во-первых, я бы рекомендовал создать plist 1.1, который обрабатывает ваши пары значений name как связанные сущности, которыми они являются, например:

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

или

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

Мне кажется, что если бы они были разделены таким образом, как у вас, это усложнило бы любую будущую обработку, которую вы хотите выполнить.

Вам нужно больше метаинформации рядом с ником, чтобы привести ассоциацию к правильному состоянию, если только вы не хотите получать запросы при каждой вставке.создание таких прозвищ, как

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

это дало бы вам все необходимое, чтобы легко вставить ваши данные в нужное место на любом языке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top