Разбор и изменение XML-файла с помощью специального инструмента или скрипта - PullRequest
0 голосов
/ 03 марта 2012

Я сталкиваюсь с чем-то подобным довольно часто.На этот раз у меня есть файл спрайт-листа, содержащий много строк, таких как:

<textureregion id="2" src="blue_ship1.png" x="778" y="791" width="64" height="65" rotated="false" trimmed="false" srcx="0" srcy="0" srcwidth="64" srcheight="65"/>

Теперь мне нужно увеличить id в каждой области текстуры, например, на 100, а затем записать тот же xml в другой файл илиперезаписать существующее.Мне придется делать это снова и снова, поэтому мне нужно автоматизировать это.Я могу придумать бесчисленное множество способов сделать это.Но я также хочу узнать что-то новое, поэтому, вот так:

Как бы вы выполнили такую ​​задачу?Написать собственный инструмент?Сценарий?Какой язык, библиотеку или инструмент вы бы использовали?Какое наименьшее количество строк или работ вы можете отсортировать?

Ответы [ 2 ]

1 голос
/ 03 марта 2012

Я бы использовал XSL-преобразование;Есть несколько процессоров командной строки, которые могут обрабатывать данные и вашу таблицу стилей для вас.

XSLT - мощный язык, вы можете сделать практически любое преобразование XML (стилей V1) в XML, HTML или обычныйтекст.Таким образом, хотя это может быть не «наименьшее количество строк» ​​для простых задач, таких как увеличение одного идентификатора, на самом деле вы можете выполнить практически любое необходимое преобразование.

1 голос
/ 03 марта 2012

Вы можете использовать xmlstarlet для редактирования XML-файла.
Например: id ==> id+100

$ xmlstarlet edit --update '/textureregion/@id' -x '.+100'  input.xml
<?xml version="1.0"?>
<textureregion id="102" src="blue_ship1.png" x="778" y="791" width="64" height="65" rotated="false" trimmed="false" srcx="0" srcy="0" srcwidth="64" srcheight="65"/>

Вы можете добавить опцию --inplace для редактирования файла на месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...