Warning: array_merge(): Argument #2 is not an array in /hsphere/local/home/magistr/codeismy.name/wp-content/plugins/wp-pagenavi/scb/Options.php on line 46

CMS своими руками. Работаем с XML. Часть 1

Дата: Май 13, 2009

(0) комментариев

XML данные всё больше начинают приобретать популярность.. Сервисы на подобии RSS уже давно стали привычными для всех, но не смотря на всю популярность очень многие программисты обходят стороной данную технологию, так как не умеют с ней работать или она вызывает дополнительные сложности. Данная статья посвящена решению некоторых из проблем. Сегодня я расскажу как преобразовать XML в массив данных (XML2array)

Но сначала о том, что вообще такое XML

XML (англ. eXtensible Markup Language — расширяемый язык разметки; произносится [экс-эм-э́л]) — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощённым подмножеством языка SGML.

Воспользуемся для написанием класса функциями simplexml.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
 * Конвертируем XML в массив
 */
class XML {
    public $iar=0;
   
    public function _constructArray(&$result,$root,$rootname='root'){
        $n=count($root->children());

        if ($n>0){

        if (!isset($result[$rootname])){
            $this->iar++;    
            foreach ($root->attributes() as $atr=>$value){
                $result[$rootname][$atr]=(string)$value;
            }
        }

         foreach ($root->children() as $child){
             $name=$child->getName();
             $this->_constructArray($result[$rootname][$this->iar],$child,$name);                        
         }
        } else {
        $result[$rootname]= (string) $root;
        if (!isset($result[$rootname])){
        }
        }

    }

    /**
     * Возвращаем массив xml из строки
     */
    public function XML2Array($xml,$type){      
        $result=array();  
        $doc=$this->GetXMLObj($xml,$type);
        $this->_constructArray($result,$doc);
        return $result['root'];
    }
    /**
     * XML Constructor
     */
    public function _GetXMLFromFile($path) {
        $doc=simplexml_load_file($path);  //создаём объект на основе файла xml
        return $doc;
    }
    public function _GetXMLFromVar($xml) {
        $doc=simplexml_load_string($xml);    //создаём объект из переменной
        return $doc;
    }
    public function GetXMLObj($data,$type) { //выбираем тип создания объекта
        if($type=='f') $obj =

Для того, чтоб посмотреть как это работает введите код

1
2
3
$xml=new xml;
//можно ввести 2 типа получения xml: f - из файла, v - из переменной
$a=$xml->XML2Array('sample.x

А вот этот код находится в файле sample.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<data>
    <row ip="127.0.0.1" date_create="2005-05-06 09:26:08">
        <login>ToNY</login>
        <password>werwerwer:)</password>
        <group>[wheel</group>
    </row>
    <row ip="192.168.1.84" date_create="2004-11-22 08:49:10">
        <login>contmanager</login>
        <password>pass</password>
        <group>[managers</group>
    </row>
    <row ip="192.168.1.83" date_create="2004-11-22 08:49:10">
        <login>llll[contmanager</login>
        <password>pass</password>
        <group>[managers</group>
    </row>
    <row ip="192.168.1.82" date_create="2004-11-22 08:49:10">
        <login>[contmanager</login>
        <password>llpass</password>
        <group>TA[managers</group>
    </row>
</data>
a

    Автор: Sergey

    ,




    Нет комментариев на "CMS своими руками. Работаем с XML. Часть 1"

    Нет комментариев.


    Вы можете продолжить обсуждение этой статьи на форуме


    Имя : 
    Почта : 
    Сайт : 
    Комментарий : 

    Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.

    Создание сайта - Echo-group Раскрутка сайтов