Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 16.06.2003 Ostrzeżenie: (0%)
|
no wiec tak:
planuje zbudowac CMSik i slyszalem ze do budowy modulow fajnbie i optymalnie jest wykorzystac XML - jako ze o XML pojecia nie mam wygoglalem kurs i zaczalem czytac - ogolnie XML wyglada mi na takki html w ktorym mozna wlasne znaczniki definowac (wiem ze to nieporecyzyjne okreslenie ale tak mi wyglada to (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) ) no wiec zalozmy ze mam kod : [xml:1:612d83a95b] <modul> <name> Jakismodul </name> <header> header modulu </header> <main> glowna czesc modulu </main> </modul> [/xml:1:612d83a95b] taki sposob organizacji danytch mi sie podoba - fajnie bo moge sobie tagi dostosowac do swoich potrzeb... Tylko teraz pytanie - jak "wyciagnac" te dane za pomoca php z xmla ? przeciez nie bede otwieral pliku jako textowego i wyciagal linijka po linijce - nie kumam zbyt jak w ten sposob zapysane dane mozna wykorzystac "wklejajac" w odpowiednie miejsca... moglby ktos objasnic ? [/xml] |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 133 Pomógł: 0 Dołączył: 15.09.2003 Ostrzeżenie: (0%)
|
Witam
To ja może podam bardzo unwersalny kod php który pobiera dane z XMLa. Można go użyć chyba do każdego dokumentu XMLa (ja nim pobieram waluty z NBP). [php:1:8a3b245a23]<?php function fetch_xml($xml){ if(!($fp = fopen($xml, "r"))){ die("IO Error $xml_file"); } while($chunk = fread($fp,4096)){ $xml_data .= $chunk; } $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); $root_tag = $assoc_arr[$root_level]['tag']; $base_level = $root_level+1; $base_tag = strtolower($assoc_arr[$base_level]['tag']); $i = 0; $prefix = ""; foreach($assoc_arr as $element){ if($element['tag'] != $root_tag){ if(!preg_match('/^s+$/', $element['value'])){ $tag = strtolower($element['tag']); if($element['type'] == 'open' && $element['level'] > ($base_level+1)){ // Add Prefix's for new Tags Under Base $tag_prefix[$element['level']] = $tag; } elseif($element['type'] == 'close' && $element['level'] > ($base_level+1)){ // Remove Prefix's when tags closed $tag_prefix[$element['level']] = ""; } elseif($element['type'] == 'complete') { // Generate Prefix if(count($tag_prefix) > 0){ $str_prefix = ""; foreach($tag_prefix as $prefix){ if(!empty($prefix)) $str_prefix .= $prefix."_"; } } // End Prefix // Add Our Data to the Items Array $extra = ""; while(isset($items[$i][$str_prefix.$tag.$extra])){ if(empty($extra)) $extra = 1; $extra++; } $items[$i][$str_prefix.$tag.$extra] = $element['value']; } } if($tag == $base_tag){ // Add Our Atttributes if(isset($element['attributes']) && $element['type'] == 'open'){ $items[$i] = $element['attributes']; } // Start New Record if($element['type'] == 'close'){ $i++; } } } } return $items; } ?>[/php:1:8a3b245a23] Teraz wystarczy, że wywołasz funkcję w parametrze podając link do pliku xml. Funkcja zwróci Ci tablicę $items. Możesz zobaczyć na jakiej zasadzie jest zbudowana: [php:1:8a3b245a23]<?php echo "<pre>"; print_r($items); echo "</pre>"; ?>[/php:1:8a3b245a23] To jest jeden z przykładów pobierania danych z xmla. Oczywiście większość programistów pisze specjalne parsery pobierające dane tylko z konkretnego pliku xml. Jednak to na początek pwoinno wystarczyć. |
|
|
|
Yacho [XML] opis modulow za pomoca xml [mocno newbie] 16.02.2004, 17:52:14
hawk Wyciągasz generalnie stosując parser XML.
Do wybo... 16.02.2004, 23:08:01
Yacho no dobra... kwestia 1 rzeczy - jak bedzie wygladac... 16.02.2004, 23:42:09 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 01:46 |