В настоящее время работает над проектом, использующим Bash, который анализирует файл XML. Например, если у меня есть книжный магазин. xml:
<bookstore>
<genre name = "Childrens">
<book>
<author>
<title name = "Cat in the Hat">
</book>
</genre/
<genre name = "Young Adult">
<book>
<author>
<title name = "Twilight">
</book>
</genre>
</bookstore>
...
Учитывая, что я уже могу извлечь все имена из файла xml. Теперь я пытаюсь использовать заданное и каким-то образом проследить назад и найти соответствующий и как-то сопоставить книгу с с использованием ассоциативного массива. Например:
books[$title] = $genre
books["Cat in the Hat"] = "Childrens"
Я считаю, что первым шагом является получение названия этого жанра, зная, что у меня уже есть сохранены в отдельном массиве. В конце концов, моя цель - сравнить отдельный файл xml, содержащий только названия книг, и сравнить его с книжным магазином. xml. Когда я запускаю программу и сравниваю ее с книжным магазином. xml, программа все время считывает входной файл и возвращает жанр для каждого заголовка. Для другой справки, вот как я могу извлечь заголовки из данного книжного магазина. xml файл и что я пытаюсь выполнить sh.
TITLES=$(echo 'cat //title/@name' | xmllint --shell $filename | sed -n 's: name=\"\(.*\)\":\1:p')
for title in $TITLES; do
BOOKS[$title]="[this will be its respective genre somehow]"
done
В конце, если я введу файл xml только с заголовками и сравню его с книжным магазином. xml, результат должен выглядеть примерно так:
Title: Cat in the Hat Genre: Children's
Title: Twilight Genre: Young Adult
Пожалуйста, помогите с этим и дайте мне знать, если необходимы дальнейшие разъяснения! Заранее спасибо.