2013-06-25 3 views
0

У меня довольно уникальная ситуация, когда мне нужно внести массовые изменения в файл XML (или обычного текста). В файле XML, есть несколько ссылок изображения, такие как этот:Нужна помощь в поиске или замене частей текстового файла

<image> 
    <id>image1</id> 
    <dateTaken>Sun Sep 9 10:57:31 GMT-0700 2012</dateTaken> 
    <dateAdded>Mon Jun 24 17:44:50 GMT-0700 2013</dateAdded> 
    <filename>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</filename> 
</image> 

Что мне нужно сделать, это взять имя файла между <filename> и </filename>, и использовать, чтобы заменить часть между <id> и </id>. Например, в описанном выше случае, я должен был бы заменить «image1» с 0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg так будет выглядеть следующим образом:

<image> 
    <id>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</id> 
    <dateTaken>Sun Sep 9 10:57:31 GMT-0700 2012</dateTaken> 
    <dateAdded>Mon Jun 24 17:44:50 GMT-0700 2013</dateAdded> 
    <filename>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</filename> 
</image> 

Есть несколько сотен из этих ссылок изображения I необходимо изменить в этом же документе. Используя PHP или другой метод, можно ли быстро изменить документ и заменить каждый идентификатор между <id> и </id> содержимым между <filename> и </filename>, в каждом <image></image> Ссылка в документе? Спасибо за любую возможную помощь!

+0

Используйте один из многих библиотек XML разбора, доступных для PHP. – Barmar

+0

Вы предпринимали какие-либо попытки решить это самостоятельно? Мы не являемся службами написания кода, мы здесь, чтобы помочь вам исправить проблемы в вашем коде. Но вы должны показать, что вы пробовали, и задать конкретные вопросы. – Barmar

ответ

1

Если у вас есть корень к этому XML, вы могли бы сделать что-то вроде следующего путем загрузки XML в $ xml_string:

$xml = new SimpleXMLElement($xml_string); 
foreach($xml->children() as $child){ 
$child->id = $child->filename; 
} 
$xml->asXml('updated.xml');