Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][XML]Parsowanie xmla
Forum PHP.pl > Forum > Przedszkole
kamil_lk
Cześć,

Parsuję plik xml za pomocą metody simplexml_load_string.

Problem zaczyna się, gdy w xml-u mam zapisane znaczniki html ponieważ z tych znaczników tworzy mi kolejne zagłębienia w obiekcie.
Plik wygląda mniej więcej tak:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <dane>
  3. <nazwa>Nazwa</nazwa>
  4. <opis>Opis - <b>Tekst w znacznikach html</b></opis>
  5. </dane>

Wymyśliłem sobie, że będę zamieniał znaczniki za pomocą metody htmlentities.
I w tym miejscu powstaje mój problem.
Jak wykluczyć znaczniki xml-owe, tj.: <?xml>, <dane>, <nazwa>, <opis> z tej metody?
Pyton_000
Żle, musisz ująć tekst który zawera niedozwolone znaki w <![CDATA[ ]]> (chodzi o XML)
Forti
  1. $file = file_get_contents('...') // może być i http://
  2. $sxi = new \SimpleXmlIterator($file);
  3. $someAwesomeArrayMUhahah = $this->sxiToArray($sxi);
  4.  
  5. private function sxiToArray($sxi)
  6. {
  7. $a = array();
  8. for( $sxi->rewind(); $sxi->valid(); $sxi->next()) {
  9. if(!array_key_exists($sxi->key(), $a)){
  10. $a[$sxi->key()] = array();
  11. }
  12. if($sxi->hasChildren()){
  13. $a[$sxi->key()][] = $this->sxiToArray($sxi->current());
  14.  
  15. }
  16. else{
  17. $a[$sxi->key()][] = strval($sxi->current());
  18. }
  19.  
  20. }
  21. return $a;
  22.  
  23.  
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.