![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 0 Dołączył: 7.08.2003 Skąd: Warszawa | Jankowce Ostrzeżenie: (0%) ![]() ![]() |
Mam plik XML ktory zawiera drzewo w stylu:
[xml:1:36e3dfce81] <core> <element> <typ>Jakis tam typ</typ> <typid>1</typid> </element> <element> <typ>Drugi element</typ> <typid>2</typid> </element> <element> <typ>trzeci element</typ> <typid>3</typid> </element> <grupaelementow> <nazwa>grupa1</nazwa> <subnazwa>aaaa</subnazwa> <typid>1</typid> <typid>2</typid> </grupaelementow> <grupaelementow> <nazwa>grupa2</nazwa> <subnazwa>qqqq</subnazwa> <typid>1</typid> </grupaelementow> <grupaelementow> <nazwa>grupa3</nazwa> <subnazwa>ttt</subnazwa> <typid>1</typid> <typid>2</typid> <typid>2</typid> </grupaelementow> </core> [/xml:1:36e3dfce81] I teraz chcialbym stworzyc tablice wielowymiarowa na podstawie tego pliku xml, ktora by wygladala tak: [php:1:36e3dfce81]<?php $core['nazwa grupy']['subnazwa']['typid'] = 'nazwa typu'; //czyli tak zeby miec to wszystko pogrupowane czyli przykladowo core od //grupa elementow o nazwie grupa1 wygladalby tak: $core['grupa1']['aaaa']['1'] = 'Jakis tam typ'; $core['grupa1']['aaaa']['2'] = 'Drugi element'; ?>[/php:1:36e3dfce81] w sposob analogiczny pozostale typy - czyli chodzi mi o przerobienie dokumentu xml do postaci tablicy wielowymiarowej, i teraz pytanie jak to zrobic przy pomocy php - potraktowac dokument xml jako dokument tekstowy i uzywac fuknkcji do obrobki tekstu wraz z wyrazeniami regularnym, czy jest moze jakis sposob poprzez wbudowane funkcje obslugi XML - a moze jakies 3 rozwiazanie ![]() Prosze o pomoc -------------------- Dev Env: php 5.0.5 | 5.1.1 / Apache 2.0.55 / MySQL 5.0.16 / apd
Dev platform: Windows XP | Debian Sarge |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 263 Pomógł: 0 Dołączył: 13.07.2003 Skąd: wawa Ostrzeżenie: (0%) ![]() ![]() |
-------------------- www.tigroup.pl Rozwiązania informatyczne dla sektora MSP.
Projektowanie i tworzenie stron www, dedykowane rozwiązania e-biznes, outsourcing usług programis |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 133 Pomógł: 0 Dołączył: 15.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wprawdzie poniższa funkcja nie stworzy tablic w takiej postaci jakiej chciałeś (jednak równie 'przyjaźnie') ale też poradzi sobie bezproblemowo z Twoim plikiem XML:
w paramterze podajesz nazwę pliku XML. To powinno wystarczyć. Ten post edytował Dawid Pytel 7.04.2006, 16:14:07 -------------------- Ez Partner :]
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 0 Dołączył: 7.08.2003 Skąd: Warszawa | Jankowce Ostrzeżenie: (0%) ![]() ![]() |
fajnie ta funkcja dziala bardzo ladnie - jedynie mam problem z polskimi znakami - dokument jest zakodowany w UTF-8 i po przepuszczeniu go przez ta funkcje zamiast polskich liter dostaje ? - jak sie z tym uporac - dodam ze chcialbym miec tekst pop przerobce w ISO.
-------------------- Dev Env: php 5.0.5 | 5.1.1 / Apache 2.0.55 / MySQL 5.0.16 / apd
Dev platform: Windows XP | Debian Sarge |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 0 Dołączył: 7.08.2003 Skąd: Warszawa | Jankowce Ostrzeżenie: (0%) ![]() ![]() |
sprobowalem to przekonwertowac przy uzyciu czegos takiego:
[php:1:1f9d18b419]<?php function utf82iso88592($tekscik) { $tekscik = str_replace("xC4x85", "ą", $tekscik); $tekscik = str_replace("xC4x84", 'Ą', $tekscik); $tekscik = str_replace("xC4x87", 'ć', $tekscik); $tekscik = str_replace("xC4x86", 'Ć', $tekscik); $tekscik = str_replace("xC4x99", 'ę', $tekscik); $tekscik = str_replace("xC4x98", 'Ę', $tekscik); $tekscik = str_replace("xC5x82", 'ł', $tekscik); $tekscik = str_replace("xC5x81", 'Ł', $tekscik); $tekscik = str_replace("xC5x84", 'ń', $tekscik); $tekscik = str_replace("xC5x83", 'Ń', $tekscik); $tekscik = str_replace("xC3xB3", 'ó', $tekscik); $tekscik = str_replace("xC3x93", 'Ó', $tekscik); $tekscik = str_replace("xC5x9B", 'ś', $tekscik); $tekscik = str_replace("xC5x9A", 'Ś', $tekscik); $tekscik = str_replace("xC5xBC", 'ż', $tekscik); $tekscik = str_replace("xC5xBB", 'Ż', $tekscik); $tekscik = str_replace("xC5xBA", 'ź', $tekscik); $tekscik = str_replace("xC5xB9", 'Ź', $tekscik); return $tekscik; } ?>[/php:1:1f9d18b419] dodajac linie [php:1:1f9d18b419]<?php if(!($fp = fopen($xml, "r"))){ die("IO Error $xml_file"); } while($chunk = fread($fp,4096)){ $xml_data .= $chunk; } $xml_data = utf82iso88592($xml_data); // <- tu $parser = xml_parser_create(); xml_parse_into_struct($parser, $xml_data, &$assoc_arr, &$idx_arr); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); ?>[/php:1:1f9d18b419] jednak to nie pomoglo - ma ktos pomysl ![]() -------------------- Dev Env: php 5.0.5 | 5.1.1 / Apache 2.0.55 / MySQL 5.0.16 / apd
Dev platform: Windows XP | Debian Sarge |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
iconv?
-------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 17:52 |