XML Twig: обновить одну запись - PullRequest
0 голосов
/ 01 октября 2018

У меня есть XML-файл с большим количеством идентичных тегов, имеющих разные атрибуты.Мне нужно найти ТОЛЬКО ОДИН из тегов, который содержит указанный атрибут, и обновить соответствующее значение, а затем сохранить информацию, чтобы новый файл, содержащий информацию, был идентичен оригиналу с обновленным только измененным значением тега.Я использую XML Twig и удивляюсь, как быстро это сделать.Я видел методы finish и finish_print, но не могу заставить их работать.Я думаю, что эти методы связаны с twig_handlers, который я сейчас использую.Однако загрузка всего документа может быть быстрее при решении проблемы такого типа.Файлы могут быть загружены в память при необходимости, поскольку они не слишком велики.Мое единственное реальное беспокойство в настоящее время - время, потраченное на выполнение операции.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 01 октября 2018

Время будет просто функцией сериализации вашего XML.

IMO twig_handlers в первую очередь полезны для инкрементального анализа большого XML и, возможно, для редактирования на месте.Если ваш XML не большой, то просто загрузка в память - путь вперед и менее запутанный.

Что касается поиска и замены - xpath - инструмент для работы.

Напримересли вы хотите найти:

<element name="fish">
  <value>42</value>
</element>

Тогда вы можете найти это в своем XML-коде с помощью:

foreach my $elt ( $xml -> get_xpath('//element[@name="fish"]') ) { 
  $elt -> print; 
}

Затем вы измените это по своему усмотрению, а не просто распечатаете, изатем просто распечатайте весь документ XML в новый файл.

Если объем доступной памяти> 10 раз превышает размер документа, загрузка в память - путь.

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