Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Klasa] EasyXML - Wrapper DOM z latwoscia obslugi SimpleXML
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
ShaXbee
Biblioteka wymaga php 5.1 (lub nowszego), jest zależna od biblioteki DOM XML, która wchodzi w skład standardowej kompilacji php.
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:
  1. <?php
  2. $xml = new EasyXML('<root><check>someValue</check></root>'); // tworzy obiekt na podstawie podanego ciagu znakow
  3. // lub
  4. $xml = EasyXML::loadXMLFile('file.xml'); // laduje plik i tworzy nowy obiekt EasyXML
  5.  
  6. $xml->root->check = 'someOtherValue'; // ustawia tekst wewnatrz tagow <check></check>, tworzy tag jesli jeszcze nie istnieje
  7. $xml->root['attribute'] = 'attributeValue'; // ustawia wartosc atrybutu
  8.  
  9. unset($xml->root['attribute']); // usuwa atrybut
  10.  
  11. $domain = $xml->root->check->appendChild('domain');
  12. $otherDomain = $xml->root->check->appendChild('domain'); // tworzy kolejnego potomka
  13.  
  14. $domain['name'] = 'aqq.pl';
  15.  
  16. unset($xml->root->check->domain); // usuwa wszystkich potomkow o nazwie domain
  17.  
  18. $xml->root->firstChild; // dostep do wlasciwosci danego node'a jak w DOM ...
  19. $xml->root->hasAttribute('test'); // ... podobnie z metodami
  20.  
  21. $xml->root->check = '<domain>aqq</domain><domain>bqq</domain>'; // mozna wprost podac zawartosc taga
  22.  
  23. $data = serialize($xml); // dzialajaca serializacja
  24. $xml->getArray(); // zwraca node jako tablice z tekstowymi wlasciwosciami i zachowana struktura
  25.  
  26. $xml->xpath('//check'); // xpath tez dziala :)
  27.  
  28. echo $xml; // wyswietla string z tagami XML
  29. ?>


Proszę o pobawienie się klasą i bezlitosne wytykanie wszystkich błędów w działaniu smile.gif
Prph
Wyglada bardzo interesujaco. Jaka licencja, bo o tym nie wspomniales?

Pozdrawiam, Adrian.
ShaXbee
Zaktualizowałem dokumentację - klasa jest opublikowana na licencji LGPL.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.