Редактирование и удаление узлов XML с помощью PHP - PullRequest
0 голосов
/ 23 ноября 2010

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

<allentries>
  <entry>
    <entryid>1</entryid>
    <title>This is the title</title>
    <date>2010</date>
    <author>Some Guy</author>
  </entry>
  <entry>
    <entryid>2</entryid>
    <title>This is Another title</title>
    <date>2011</date>
    <author>Some Other Guy</author>
  </entry>
  <entry>
    <entryid>3</entryid>
    <title>This is the other title</title>
    <date>2012</date>
    <author>And Another Guy</author>
  </entry>
</allentries>

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

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

Похоже, это не должно быть слишком сложно, но каждый пример, который я использовал до сих пор, не удаетсячто-нибудь.Кто-нибудь может предложить что-нибудь или какие-нибудь другие учебные пособия, которые могут мне помочь?

Большое спасибо за ваше время!

Ответы [ 2 ]

0 голосов
/ 24 ноября 2010

Хорошо, извините, провел дополнительное исследование и нашел хороший пример на этом сайте , используя:

$xml_file = "thefile.xml";
if(!$xml=simplexml_load_file($xml_file)){
    trigger_error('Error reading XML file',E_USER_ERROR);
}

simplexml_load_file вместо simplexml_load_string теперь работает как шарм! Не удивительно, что вы, ребята, были сбиты с толку - спасибо за все ваши ответы и за то, что терпели мою глупость!

0 голосов
/ 23 ноября 2010

2 быстрых способа, оба с использованием регулярных выражений:

  • разбить XML на массив с помощью регулярных выражений со значением entryid в качестве ключа
    • при обновлении просто создайте новое значение и замените значение по указанному ключу
    • при удалении только что сброшено
  • использовать регулярное выражение для замены узлов

Нет представления о производительности для этих двух случаев. Я постараюсь помочь вам с регулярным выражением.

Gabriel

...