Mam taki kod:
plik testowy.php
<?php $plik_xml = 'p.xml'; /** * Klasa zamiany pliku XML na tablice w PHP * Dodałem metode statyczną utf8_for_xml która usuwa krzaki bezpośrednio przy pobieraniu XML'a * * XML2Array: A class to convert XML to array in PHP * * Author : Abdelwahd Hannabou * * Usage: * $Array = XML2Array::CreateArray('FILE_PATH'); */ class XML2Array { { return preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', '', $string); } { } { return FALSE; } /* echo "<pre>"; print_r($Class['UsersFileXml']); echo "</pre>"; */ $Class['FileXml'] = simplexml_load_string($Class['UsersFileXml']); $Class['FileJson'] = json_encode($Class['FileXml']); $Array = json_decode($Class['FileJson'],TRUE); return $Array; } } $xml = XML2Array::CreateArray($plik_xml); /* echo '<pre>'; print_r($xml); echo '</pre>'; */
plik p.xml
<?xml version="1.0" encoding="UTF-8"?> <glowny> <wezel1>test</wezel1> <wezel2>test2</wezel2> <cos>napis ktory sie tu zalapal i dlatego nie widac tego co jest w "cos innego"<cosinnego>test3</cosinnego></cos> </glowny>
Nie pokazuje węzła <cosinnego> tylko widzi tam string, jak zrobić, żeby pomijał jakikolwiek string jeśli występuje na początku jakiegoś węzła a nie jest w poprawnym formacie < i > ?
Tutaj np. skrypt zachowuje się prawidłowo i pomija nie chciany string:
<?xml version="1.0" encoding="UTF-8"?> <glowny> <wezel1>test</wezel1> <wezel2>test2</wezel2> <cos><cosinnego>test3</cosinnego>napis ktory sie tu zalapal i widac to co jest w "cos innego"<tezwidac>to tez widac</tezwidac></cos> </glowny>