делаем xml с помощью php

guru85

Постоялец
Регистрация
24 Мар 2010
Сообщения
100
Реакции
4
вот скрипт
PHP:
<?php
class Array2XML {
    private $writer;
    private $version = '1.0';
    private $encoding = 'UTF-8';
    private $rootName = 'video';
    function __construct() {
        $this->writer = new XMLWriter();
    }
    public function convert($data) {
        $this->writer->openMemory();
        $this->writer->startDocument($this->version, $this->encoding);
        $this->writer->startElement($this->rootName);
        if (is_array($data)) {
            $this->getXML($data);
        }
        $this->writer->endElement();
        return $this->writer->outputMemory();
    }
    public function setVersion($version) {
        $this->version = $version;
    }
    public function setEncoding($encoding) {
        $this->encoding = $encoding;
    }
    public function setRootName($rootName) {
        $this->rootName = $rootName;
    }
    private function getXML($data) {
        foreach ($data as $key => $val) {
            if (is_numeric($key)) {
                $key = 'key'.$key;
            }
            if (is_array($val)) {
                $this->writer->startElement($key);
                $this->getXML($val);
                $this->writer->endElement();
            }
            else {
                $this->writer->writeElement($key, $val);
            }
        }
    }
}
    header('Content-type: application/xml');
    $data = array(
        'updated' => 111,
        'video' => array(
            'title' => 'test test',
			'description' => 'test test',
			'join_url' => 'test test',
			'clip_url' => 'test test',
			'screen_url' => 'test test',
            'clips' => array(
                'clip' => array(
                'duration' => 150,
                'width' => 'objName',
				'height' => 'objName',
				'flv' => 'objName'
				)
            )
        )
    );
    $converter = new Array2XML();
    $xmlStr = $converter->convert($data);
    echo $xmlStr;
вот проблема: надо мне получить из него вот это к примеру ну естественно со своими параметрами. не могу сообразить, как такое сделать? не получается у меня много тегов video, только один. толи цикл, толи массив, а может поспать леч?
 
а как этой штукой задавать <![CDATA[ или атрибуты?
ИМХО делай через DOMDocument, кода будет больше но зато полное управление над построением XML
 
Назад
Сверху