Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][XML]Parsowanie xmla
kamil_lk
post
Post #1





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

Ostrzeżenie: (0%)
-----


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?

Ten post edytował kamil_lk 12.02.2015, 11:41:43
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Żle, musisz ująć tekst który zawera niedozwolone znaki w <![CDATA[ ]]> (chodzi o XML)

Ten post edytował Pyton_000 12.02.2015, 11:55:27
Go to the top of the page
+Quote Post
Forti
post
Post #3





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


  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.  


Ten post edytował Forti 12.02.2015, 11:57:14


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:09