Mam taki kod:
public function xml_to_array($xml_url) { $xml_url = '<modele> <model typ="AFD 4-400-025T" name="afd_4_400_025t" no="1400" pw="250" uv="400" ia="0.71" qm="4900" nart="42515030" /> <model typ="AFD 4-450-037T" name="afd_4_450_037t" no="1400" pw="370" uv="400" ia="0.98" qm="6800" nart="42515040" /> <model typ="AFD 4-500-055T" name="afd_4_500_055t" no="1400" pw="550" uv="400" ia="1.5" qm="8500" nart="42515050" /> <model typ="AFD 4-560-090T" name="afd_4_560_090t" no="1400" pw="900" uv="400" ia="2.4" qm="11300" nart="42515060" /> <model typ="AFD 4-600-090T" name="afd_4_600_090t" no="1450" pw="900" uv="400" ia="2.4" qm="13000" nart="42515000" /> <model typ="AFD 4-700-220T" name="afd_4_700_220t" no="1420" pw="2200" uv="400" ia="4.8" qm="17000" nart="42515010" /> <model typ="AFD 8-800-300T" name="afd_8_800_300t" no="1420" pw="3000" uv="400" ia="6.5" qm="26600" nart="42515020" /> </modele>'; $p = xml_parser_create(); xml_parse_into_struct($p, $xml_url, $vals, $index); xml_parser_free($p); $this->index = $index; $this->val = $vals; }
i tu wszystko fajnie działa. Niestety jak usiłuje wczytać plik z dysku to się sypie;
próbowałem zrobić to na kilka sposobów, mianowicie:
public function xml_to_array($xml_url) { $string =""; foreach ($xml_url as $x) $string .= $x; $p = xml_parser_create(); xml_parse_into_struct($p, $string, $vals, $index); xml_parser_free($p); $this->index = $index; $this->val = $vals; }
w tym przypadku var_dump zwraca mi zawartość
a do xml_parse_into_struct() zwraca jakies bzdury bo funkcja zwraca nie to co bym chciał.
następne podejście:
public function xml_to_array($xml_url) { $string = simplexml_load_file($xml_url); $p = xml_parser_create(); xml_parse_into_struct($p, $string, $vals, $index); xml_parser_free($p); $this->index = $index; $this->val = $vals; }
i błędy które dostaje:
jest ich o wiele więcej ale nie będę ich wszystkich wypisywał.
Próbowałem także fopen i fread ale niestety efekt jest podobny do rozwiązania z file()
nie wiem może jest jakiś problem z składnią xml'a ale niestety na to nie mam wpływu dostałem gotowe pliki i nie wyobrażam sobie poprawiać 150 plików :/
wersje php mam 5.3.4
Macie może jakiś pomysł jak to można inaczej zrobić?