![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem. Piszę parser xml`a i zastanawiam się w jaki sposób zrobić zagnieżdząnie. Chodzi mi o to, że mogę mieć x poziomów zagnieżdżenia. Jak aplikacja ma automatycznie to robić. To znaczy nie chce pisać tyle pętli ile zagnieżdżeń tylko, żeby sam to sprawdzam czy jest zagnieżdżenie n-tego stopnia. Jak jest to wchodzi i sprawdza czy jest n+1 stopnia. Jak jest to wchodzi i tak dalej |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A dlaczego piszesz WŁASNY parser xml? Jakie są założenia?
Ten post edytował wookieb 17.08.2010, 11:14:06 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Rekurencja?
Poza tym, jak korzystasz z xml reader, to masz przecież tę samą funkcję wywoływaną dla każdego węzła. Sprawdzasz, jaki to węzeł, jeśli otwarcie -> zwiększasz zmienną, zamknięcie -> zmniejszasz. Ale to rozważania w ciemno. ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
// edit
tu były głupoty, że aż mi smutno się robi dlatego już ich nie ma pewnie istotnym faktem będzie wspomnienie, że chce wygenerować drzewo na podstawie tego xml`a ![]() coś nie tak kumam. Korzystam z xml reader`a i mam taki kodzik
no i fajnie wyświetli całą strukturę ALE jak np. wypisać tylko 1 poziom (każdy węzel ma atrybut poziom). np. chce wyświetlić tylko z poziomu 1 wtedy musiałbym zrobić tak
no i jest manufaktura. p.s. Powtarzanie się "HASLO" jest praiwdłowe. to jedyny znacznik w tym pliku xml. haslo zawiera haslo ktory zawiera kilka haslo Ten post edytował Fixus 17.08.2010, 12:33:56 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Generalnie XMLReader jest trudno w obsłudze oraz wolniejszy w działaniu w porównaniu do simpleXML. Jeżeli xml-e będą małe bez problemu lepiej będzie użyć simpleXML albo też DOMDocument.
-------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat no i fajnie wyświetli całą strukturę ALE jak np. wypisać tylko 1 poziom (każdy węzel ma atrybut poziom). np. chce wyświetlić tylko z poziomu 1 wtedy musiałbym zrobić tak : Cytat depth Depth of the node in the tree, starting at 0 edit: Cytat Generalnie XMLReader jest trudno w obsłudze oraz wolniejszy w działaniu w porównaniu do simpleXML Masz jakieś benchmarki? Z tego, co wiem, to XMLReader jest szybszy niż DOMDocument/SimpleXML. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
też słyszałem, że xmlreader jest szybszy. Mój xml waży 1mb i jest sparsowany i wyświetlony w formie powiedzmy tablicy błyskawicznie więc na osiągi nie narzekam.
Jednak to nie o to w tym temacie chodzi. Struktura wygląda tak (mniej więcej) <HASLO> <HASLO POZIOM="0" NAZWA="JAKAS_NAZWA_1"> <HASLO POZIOM="1" NAZWA="JAKAS_NAZWA_2"> <HASLO POZIOM="2" NAZWA="JAKAS_NAZWA_4"/> </HASLO> <HASLO POZIOM="1" NAZWA="JAKAS_NAZWA_3"> <HASLO POZIOM="2" NAZWA="JAKAS_NAZWA_5"/> </HASLO> </HASLO> </HASLO> Jakoś mniej więcej tak. No i chce np. wygenerować tylko 1 poziom to musiałbym $xml->HASLO->HASLO['NAZWA'] a to manufaktura |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Jak otworzę bloga to opiszę.
Zrób sobie testowego xmla z 1000 elementów Przeleć xmlreaderem po każdym (next w pętli + co tam chcesz) a potem simplexml-em i foreachem. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.07.2025 - 06:28 |