Uchwycić moment…

menic’s devBlog

Archive for sierpień, 2007

php array to xml

Potrzebowałem funkcje, która na podstawie tablicy stworzy nam plik xml. Samo napisanie funkcji jest banalne, ale problem następuje w przypadku, gdy mamy nie unikalne klucze w tablicy. Solucją jest przekazanie do funkcji tablicy zawierającej nazwe nieunikalnych kluczy.

PHP:
  1. <?php
  2. /**
  3. * Tworzy obiekt xml na podstawie tablicy
  4. *
  5. * @param array $aXml Wejściowa tablica
  6. * @param SimpleXMLElement $oXml
  7. * @param array $aElements tablica non-unique elementów
  8. * @return SimpleXMLElement
  9. */
  10. function arrayToXml( array $aXml, SimpleXMLElement $oXml, $aElements = null )
  11. {
  12. static $aArray;
  13.  
  14. if( is_array( $aElements ) )
  15. {
  16. $aArray = $aElements;
  17. }
  18.  
  19. if( is_array( $aXml ) )
  20. {
  21. foreach( $aXml as $k => $v )
  22. {
  23. if( is_array( $v ) )
  24. {
  25. if( is_array( $aArray ) )
  26. {
  27. if( in_array( $k, $aArray ) )
  28. {
  29. foreach( $v as $kk => $vv )
  30. {
  31. $oXml->addChild( $k, $vv );
  32. }
  33. }
  34. else
  35. {
  36. $oXml->addChild( $k );
  37. }
  38. }
  39. else
  40. {
  41. $oXml->addChild( $k );
  42. }
  43. arrayToXml( $aXml[$k], $oXml->$k );
  44. }
  45. else
  46. {
  47. if( !is_numeric( $k ) )
  48. {
  49. $oXml->addChild( $k, $v );
  50. }
  51. else
  52. {
  53. //Tutaj można coś zrobić dla kluczy numerycznych
  54. }
  55. }
  56. }
  57. }
  58. return $oXml;
  59. }
  60. ?>

I jeszcze link, gdzie jest lepiej sformatowane (durny wp) http://cpaste.com/2403

2 comments

Blondynka…

2 comments