Biblioteka jest dostępna na licencji LGPL.
Przy okazji projektu, nad którym pracujemy w firmie potrzebowaliśmy dobrego, prostego rozwiązania do edycji dokumentów XML. SimpleXML niestety nie odpowiadał naszym potrzebom, głównie z powodu ograniczeń, a DOM wymagał dużej ilości kodu i był poprostu niewygodny.
Korzystając z magicznych metod oraz interfejsu ArrayAccess stworzyliśmy klasę z API takim jak SimpleXML, wzbogaconym o dodatkowe funkcje i dostęp do metod oraz pół Node'ów DOM. Obiekty EasyXML nie mają też dużego narzutu pamięci, ponieważ są tworzone tylko w momencie pobrania wartości przez __get. Teoretycznie ograniczeniem są jedynie możliwości php i obiektu DOM.
Download:
http://shaxbee.superhost.pl/code/2007/01/EasyXML.class.zip
http://shaxbee.superhost.pl/code/2007/01/E...easy_x_m_l.html
Parę przykładów użycia:
<?php $xml = new EasyXML('<root><check>someValue</check></root>'); // tworzy obiekt na podstawie podanego ciagu znakow // lub $xml = EasyXML::loadXMLFile('file.xml'); // laduje plik i tworzy nowy obiekt EasyXML $xml->root->check = 'someOtherValue'; // ustawia tekst wewnatrz tagow <check></check>, tworzy tag jesli jeszcze nie istnieje $xml->root['attribute'] = 'attributeValue'; // ustawia wartosc atrybutu $domain = $xml->root->check->appendChild('domain'); $otherDomain = $xml->root->check->appendChild('domain'); // tworzy kolejnego potomka $domain['name'] = 'aqq.pl'; $xml->root->firstChild; // dostep do wlasciwosci danego node'a jak w DOM ... $xml->root->hasAttribute('test'); // ... podobnie z metodami $xml->root->check = '<domain>aqq</domain><domain>bqq</domain>'; // mozna wprost podac zawartosc taga $xml->getArray(); // zwraca node jako tablice z tekstowymi wlasciwosciami i zachowana struktura $xml->xpath('//check'); // xpath tez dziala :) ?>
Proszę o pobawienie się klasą i bezlitosne wytykanie wszystkich błędów w działaniu
