![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 11.03.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam taki problem mam plik xml o takiej strukturze to jest tylko przykład struktury
Kod <?xml version="1.0" encoding="utf-8" ?> <katalog>(główny węzeł tzw. Korzeń) <GrupyTowarowe>(rozpoczyna się lista grup) <GrupaGlowna id="SIE"(id grupy) nazwa="Sieci"(nazwa grupy)> (grupa główna) <PodGrupy>(rozpoczyna się lista podgrup) <PodGrupa id="SIE-BAK"(id podgrupy) nazwa="AccesPoint"(nazwa podgrupy) /> </PodGrupy> (zamkniecie listy podgrup) </GrupaGlowna> (zamkniecie grupy) </GrupyTowarowe> (zamkniecie listy grup towarowych) <producenci>(lista producentów) <producent id="TEL"(id producenta) nazwa="Telegaertner" (nazwa producenta) /> <producent id="TER" nazwa="TERRATEC" /> <producent id="THE" nazwa="Thermaltake" /> <producent id="XPE" nazwa="XpertVision" /> <producent id="YAD" nazwa="Yamada" /> </producenci> (zamkniecie listy producentów) <produkty> (lista produktów) <produkt id="SIEEDIBAK0006" (kod produktu) nazwa="EDIMAX (EW-7203APG) Acces Point 54Mbps 802.11g, 1xLAN" (nazwa produktu) producent="EDI" (kod producenta) grupa="SIE-BAK"(kod grupy) cena_netto="153.03"(cena netto) vat="23"(stawka podatku vat) cena_sugerowana="190.00"[Parametr opcjonalny]( sugerowana cena detaliczna z VAT) data="2005-02-25"(data dodania produktu do oferty action) gwarancja="G024M"(oznaczenie czasu gwarancji) dostepny="25"(obecny stan magazynowy dla liczby <= 30 lub napis ponad 30 dla liczby >30) na_zamowienie="N"(produkt na zamówienie) oferta_specjalna="N">(produkt w ofercie specjalnej) mala_paleta="N”(czy produkt może być wysłany na małej palecie) large="N” > (czy produkt jest towarem wielkogabarytowym) <zdjecia> (zdjecia) <zdjecie plik="/Pictures/SIE/BAK/ SIEEDIBAK0006/1.jpg"(ścieżka do pliku, używana przy wywoływaniu zdjęć) domyslne="1"(zdjęcie domyślne) data="2006-12-01"(data dodania zdjęcia) /> </zdjecia> (koniec listy zdjęć) <technika> (opis techniczny) (parametry techniczne) <parametr nazwa="Prędkość maksymalna" opis="Wi-Fi 54Mbps ( 18 dBm, RP-SMA odłączalna Antena x 1), 1xRJ45" jm="" (jednosta miary w jakiej podawany jest parametr, gdy jm=”www” to parametr jest linkiem do strony www) typ="varchar" /> </technika> (zamkniecie opisu technicznego) </produkt> (zamknięcie produktu) </produkty> (zamknięcie listy produktów) </katalog> (końcowy znacznik tego dokumentu xml) 501 577 551 michał Tutaj zamieszczam kawałek XML gotowego Kod <GrupyTowarowe> <GrupaGlowna id="GIP" nazwa="_Gadżety i Prezenty"> <PodGrupy> <PodGrupa id="GIP-GAD" nazwa="Gadżety" /> <PodGrupa id="GIP-GRY" nazwa="Gry" /> <PodGrupa id="GIP-ZAB" nazwa="Zabawki" /> </PodGrupy> </GrupaGlowna> <GrupaGlowna id="MAT" nazwa="_Materiały reklamowe"> <PodGrupy> <PodGrupa id="MAT-REK" nazwa="Materiały reklamowe" /> </PodGrupy> </GrupaGlowna> <GrupaGlowna id="AGA" nazwa="AGD - Akcesoria"> <PodGrupy> <PodGrupa id="AGA-EKF" nazwa="Do ekspresów do kawy - filtry" /> <PodGrupa id="AGA-EKO" nazwa="Do ekspresów do kawy - odkamieniacze" /> <PodGrupa id="AGA-LAK" nazwa="Do lodówek - akcesoria" /> <PodGrupa id="AGA-ODW" nazwa="Do odkurzaczy - worki" /> <PodGrupa id="AGA-OKF" nazwa="Do okapów - filtry" /> </PodGrupy> </GrupaGlowna> <GrupaGlowna id="AGD" nazwa="AGD - Produkty"> <PodGrupy> <PodGrupa id="AGD-AKC" nazwa="Akcesoria" /> <PodGrupa id="AGD-CHL" nazwa="Automaty do pieczenia chleba" /> <PodGrupa id="AGD-BAT" nazwa="Baterie kuchenne" /> <PodGrupa id="AGD-LOZ" nazwa="Chłodziarko-zamrażarki do zabudowy (lodówki)" /> <PodGrupa id="AGD-LOW" nazwa="Chłodziarko-zamrażarki wolnostojące (lodówki)" /> <PodGrupa id="AGD-CZE" nazwa="Czajniki elektryczne" /> <PodGrupa id="AGD-DEP" nazwa="Depilatory" /> <PodGrupa id="AGD-DES" nazwa="Deski do prasowania" /> <PodGrupa id="AGD-DZF" nazwa="Dzbanki filtrujące" /> <PodGrupa id="AGD-EXP" nazwa="Ekspresy do kawy" /> <PodGrupa id="AGD-EXZ" nazwa="Ekspresy do kawy - do zabudowy" /> <PodGrupa id="AGD-FRY" nazwa="Frytkownice" /> <PodGrupa id="AGD-GAR" nazwa="Garnki / patelnie" /> <PodGrupa id="AGD-GOL" nazwa="Golarki" /> <PodGrupa id="AGD-GRE" nazwa="Grille elektryczne" /> <PodGrupa id="AGD-GRO" nazwa="Grzejniki olejowe" /> <PodGrupa id="AGD-JAJ" nazwa="Jajowary" /> <PodGrupa id="AGD-KMB" nazwa="Kombiwary" /> <PodGrupa id="AGD-KRA" nazwa="Krajalnice" /> <PodGrupa id="AGD-KMZ" nazwa="Kuchenki mikrofalowe do zabudowy" /> <PodGrupa id="AGD-KMW" nazwa="Kuchenki mikrofalowe wolnostojące" /> <PodGrupa id="AGD-KWZ" nazwa="Kuchnie do zabudowy" /> A oto mój plik php który ma za zadanie odczyt tego shitu Kod <?php $xml = simplexml_load_file('action.xml'); foreach($xml->GrupyTowarowe as $gg){ $idGrupy = $gg->GrupaGlowna['id']; $nazwaGrupy = $gg->GrupaGlowna['nazwa']; } echo $idGrupy ." - ". $nazwaGrupy; ?> Z czym mam problem a otóż z tym że tylko wyświetla pierwszą grupę (<GrupaGlowna id="GIP" nazwa="_Gadżety i Prezenty") reszty nie wczytuje i nie wyświetla, oraz chce się dostać do <PodGrupy> i tez nie mogę próbowałem robić pętle w pętli (forach) kombinowałem np z $idGrupy = $gg->GrupaGlowna->PodGrupy['id']; i takie tam i nic, przykłady brane z manuala więc nie potrzebny mi do niego link, mam się bawić z tym simpleXMl czy brać pod uwagę coś innego? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 155 Pomógł: 17 Dołączył: 13.03.2006 Skąd: Jaworze Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 11.03.2013 Ostrzeżenie: (0%) ![]() ![]() |
A czy zamiast children trzeba coś wpisać lub atribute?. Może zapytam się tak czy za pomocą simlexml dokonam czegoś takiego jak przypisanie zmiennej odpowiednim wartością XML i wstawię je do MySQL? Bo jeśli nie to szkoda roboty
wykminiłem coś takiego coś takiego ale nadal wypisuje mi tylko po 1 i to pierwszym atrybucie Kod <?php $xml = simplexml_load_file('action.xml'); foreach($xml->GrupyTowarowe as $gd){ $GGid = $gd->GrupaGlowna['id']; $GGnazwa = $gd->GrupaGlowna['nazwa']; $PGid= $gd->GrupaGlowna->PodGrupy->PodGrupa['id']; $PGnazwa = $gd->GrupaGlowna->PodGrupy->PodGrupa['nazwa']; } echo $GGid ." <br />"; echo $GGnazwa ." <br />"; echo $PGid ." <br />"; echo $PGnazwa ." <br />"; ?> To znajdzie się ktoś kto mi powie jak polski normalny sposób zrobić coś takiego abym mógł tu zastosować zmienne potem to wrzucić do mojego mysql-a? Napisze to tak prosto jak tylko mogę wiem jak wyciągnąć każdy jeden atrybut z tego pieprzonego xmla, może zamiast foreach zrobić while aby wywalało wszystko nie tylko pierwszy atrybut problem z początku mam GrupTowarowych chyba z 30 a to oddaje tylko jedna tak samo produktów mam 20000 a wypisuje tylko jeden Kod $xmlIterator = new SimpleXMLIterator('action',null,true); $xmlIterator->rewind(); while ($xmlIterator->valid()) { $temp = $xmlIterator->current(); print_r($temp); $xmlIterator->next(); } to nic nie daje wypisuje cały plik na stronie bez możliwości dalszej pracy stosując to Kod $xmlDoc = new DOMDocument(); $xmlDoc->load("action.xml"); $x = $xmlDoc->documentElement; foreach ($x->childNodes AS $item) { print $item->nodeName . " = " . $item->nodeValue . "<br />"; } otrzymuje tylko nazwy drzewa głównego nie wchodzi w poddrzewa widze sens jeszcze stosowania takiego rozwiązania ale musiałbym wpisać ok 20000 path'ow także szkoda klepać ego z klay Kod $dom = new DomDocument(); $dom->load("action.xml"); $xpath = new DOMXPath($dom); $result = $xpath->query("/GrupaTowarowa/bla/bla/bla/product/bla/bla"); foreach ($result as $element) { echo "\n".$element->nodeValue."\n"; } Może ktoś z was to już robił jeśli pisze coś nie tak że nikt tego nie rozumie to napisać a wytłumaczę jak tylko mogę bo mi się już cierpliwość kończy a efektu jak nie było tak nie ma. Kod <?php
$xml = simplexml_load_file("action.xml"); echo $xml->getName() . "<br>"; foreach($xml->GrupyTowarowe as $GrupyTow){ $IdGrupy = $GrupyTow->GrupaGlowna['id']; $NazGrupy = $GrupyTow->GrupaGlowna['nazwa']; $Dalej = $GrupyTow->PodGrupy; while($Dalej as $PodG){ <<<<<<tutaj mam błąd o co tu chodzi? $IdPodG = $PodG->PodGrupa['id']; $NazPodG = $PodG->PodGrupa['nazwa']; } } echo $IdGrupy ."<br />". $NazGrupy ."<br />". $IdPodG ."<br />". $NazPodG; ?> |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 08:19 |