Простая библиотека для работы с базой данных на файлах XML

Данная библиотека предназначена для использования с файлами в XML формате, которые могут являться своеобразной базой данных для сайта.

class SimpleXMLExtended extends SimpleXMLElement{

  public function addCData($cdata_text){
    $node = dom_import_simplexml($this);
    $no = $node->ownerDocument;
    $node->appendChild($no->createCDATASection($cdata_text));
  }

  public function setData($tag, $cdata){
    $note = $this->addChild($tag);
    $note->addCData($cdata);
  }

}

function saveXML($file, $a){
  $xml = new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><item></item>');
  $xml->addChild('pubDate', date('r'));
  foreach($a as $k=>$v){
    if(is_numeric($v))
      $xml->addChild($k, $v);
        else $xml->setData($k, str_replace("]", "}}", str_replace("[", "{{", $v)));
  }
  return $xml->asXML($file) === TRUE;
}

function loadXML($file) {
  $data = array();
  $xml = simplexml_load_string(file_get_contents($file), 'SimpleXMLExtended', LIBXML_NOCDATA);
  foreach($xml->children() as $k=>$v){
    $data[$k] = is_numeric($v) ? $v : str_replace("{{", "[", str_replace("}}", "]", $v));
  }
  return $data;
}

Собственно лайба состоит из класса и двух функций, которые следует вызывать: saveXML(«имя_файла», массив_данных) — для сохранения в файл, и loadXML(«имф_файла») — для чтения из файла(отдаёт сохранённый массив).

Если файла не существует, то он создаётся.

Файлы в базе данных — UTF-8 — это важно!

Запись опубликована в рубрике PHP, Базы данных с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий