/home/chuyen-associative-arrays-sang-xml-trong-php

Chuyển associative arrays sang XML trong PHP

Published on

Trong bài viết này, tôi sẽ hướng dẫn chuyển associative arrays sang XML.
Xin phép được giữ nguyên từ associative arrays mà không dịch (kèm thêm một số từ như class, function, ...), bởi vì dịch ra nó không được chuẩn và hay cho lắm.
Bạn có thể hiểu nó là một mảng, mà mỗi một chìa sẽ mở được một khóa. mỗi một key sẽ có một dữ liệu. (hơi khó hiểu :">)

Chúng ta khởi tạo mảng với một vài giá trị

<?php

$info['clicks'] = 203;
$info['platform'] = array( 'windows' => 4, 'linux' => 6, 'macosx' => 2 );
$info['browser'] = array( 'Firefox' => 20 , 'Chrome' => 10 );

Bây giờ sẽ bắt đầu dùng class XMLWriter.
Đầu tiên, khởi tạo một đối tượng (object) đại diện (thể hiện) cho class. Nó được sử dụng để truy cập tất cả các function của class để ghi XML.

$xml = new XmlWriter();
$xml->openMemory();
$xml->startDocument( ‘1.0’, ‘utf-8’ );
$xml->startElement( ‘infomation’) ;

write_xml( $xml, $info );

$xml->endElement();
echo $xml->outputMemory( true )
function write_xml( XMLWriter $xml, $data ) {
    foreach( $data as $key => $value ) {
        if( is_array( $value )) {
            $xml->startElement( $key );
            write_xml( $xml, $value );
            $xml->endElement( );
            continue;
        }
        $xml->writeElement( $key, $value );
    }
}

Mẫu in ra màn hình của ví dụ trên

<?xml version="1.0" encoding="UTF-8"?>
<infomation>
    <clicks> 10 </clicks>
    <platform>
        <windows> 4 </windows>
        <linux> 6 </linux>
        <macosx> 2 </macosx>
    </platform>
    <browser>
        <Firefox> 20 </Firefox>
        <Chrome> 10 </Chrome>
    </browser>
</infomation>