Обработка текста с помощью программы Вместо 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>
Я хочу добавить больше информации в список, такой как девиз и ник.Они представлены в таком формате:
<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>
это дало бы вам все необходимое, чтобы легко вставить ваши данные в нужное место на любом языке.