RkBlog

Hardware, programming and astronomy tutorials and reviews.

simpleXML

Opis rozszerzenia SimpleXML do parsowania i odczytywania danych zapisanych w dokumentach XML. Artykuł zawiera przykładowe fragmenty kodu operujące na prostym dokumencie XML

PHP 5 daje nam wiele możliwości edycji i czytania plików XML. Mamy do dyspozycji bibliotekę XML oraz DOM. O tej pierwszej napiszę poniżej. Mamy taki oto plik XML:
<baza>
	<wpis>
		<id>3</id>
		<nazwa>nazwa testowa</nazwa>
	</wpis>
	<wpis>
		<id>4</id>
		<nazwa>inna nazwa</nazwa>
	</wpis>
</baza>
Zapisz go jako np. foo.xml oraz otwórz plik PHP o takim kodzie [Czytanie pliku XML]:
<?php

$xml = simplexml_load_file('foo.xml');
foreach ($xml->wpis as $foo) 
	{
	echo "<LI>$foo->id - $foo->nazwa<br />";
	}
Biblioteka SimpleXML jest standardowym składnikiem PHP 5 i wykonanie tego skryptu powinno wyświetlić:
3 - nazwa testowa
4 - inna nazwa
Analizując kod warto zobaczyć jak wygląda obiekt $xml:
SimpleXMLElement Object
(
    [wpis] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [id] => 3
                    [nazwa] => nazwa testowa
                )

            [1] => SimpleXMLElement Object
                (
                    [id] => 4
                    [nazwa] => inna nazwa
                )

        )

)
By wyciągnąć określoną wartość należy posłużyć się zmienną $xml->NAZWA GŁÓWNEGO KLUCZA[INDEKS LICZBOWY]->NAZWA POLA KOŃCOWEGO, czyli: $xml->wpis[1]->id / $xml->wpis[0]->id.
Modyfikacja pliku XML jest prosta:
<?php

$xml = simplexml_load_file('foo.xml');
$xml->wpis[1]->nazwa = 'nowiutka nazwa';
echo $xml->asXML();
Zmiennej odnoszącej się do jakiejś wartości w pliku XML przypisujemy nową wartość. Teraz zmienna $xml zawiera zmodyfikowany plik XML w postaci tablicy. Metoda asXML() przekształca ją do formy pliku XML. Zapisać do pliku musimy sami.

Oprócz prostych plików XML możemy natrafić na takie z atrybutami:
<database>
	<db type="mysqli" host="localhost" password="" user="root" dbname="biblioteka2" prefix="linux_" />
</database>
By uzyskać dostęp do atrybutów (type, host, password itd.) wystarczy taki kod:
<?php

$xml = '<database>
	<db type="mysqli" host="localhost" password="" user="root" dbname="biblioteka2" prefix="linux_" />
</database>';
$xml = simplexml_load_string($xml);
echo $xml->db['host'];
Co wyświetli "localhost".
RkBlog

14 July 2008;

Comment article