![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 4 Dołączył: 11.12.2009 Ostrzeżenie: (0%)
|
Witam,
Mam pewien problem. Piszę dość dużą aplikację korzystającą z pliku XML dostarczanego przez zew. firmę (wolę pracować na bazach, jednak wola zleceniodawcy żeby działało na XML'u). Jednak XML jest dość dziwnie skonstruowany.
Wydaje się proste jednak w niektórych obiektach pojawiają się dodatkowe znaczniki <param> o innych nazwach więc praca na "indeksach" jest niemożliwa. Za pomocą xpatha wybieram sobie interesujące mnie nody, jednak nie wiem jak z tych nodów wybrać dalej parametr o zadanym atrybucie nazwa. W parakodzie (chciałbym żeby tak działało ale nie działa (IMG:style_emoticons/default/tongue.gif) ): zamiast
Czyli chcę pobrać wartosc parametru o nazwie wojewodztwo. Myślałem o ponownym wykorzystaniu xpatha, ale obiawiam się, że przy takiej ilości "odbiegnięć" od normy może mi sie przesadnie to skomplikować. Wiecie może jak coś takiego zrobić ? Do xmla dostaje się przez SimpleXML, a $rekord to obiekt powstający przez foreacha z $rekordy = $xml->xpath(warunki). Pozdrawiam, masahuku Ten post edytował masahuku 9.02.2010, 02:36:58 |
|
|
|
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Cytat (chciałbym żeby tak działało ale nie działa ): Bo masz źle napisane zapytanie xpath. (IMG:style_emoticons/default/winksmiley.jpg) Zerknij na w3schools. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 4 Dołączył: 11.12.2009 Ostrzeżenie: (0%)
|
A czy jak zrobie xpatha dokładnie do tego parametru to będę miał dostęp do innych parametrów w nodzie ?
Mój xpath wygląda: . Działa to tak, że wybiera mi noda o określonym tabie i type (oferta), a w tym są dopiero te parametry. Jak można sformułować xpatha inaczej ? Patrze na to w3c ale jestem tak zły, że mam blokadę w mózgu chyba (IMG:style_emoticons/default/tongue.gif) . EDIT: Czyżbym miał zrobić drugiego Xpatha który wybierze param[@nazwa='opis'] ? (IMG:style_emoticons/default/smile.gif) . A jak to z wydajnością takiego cuda ? Nigdy nie pracowałem na tak rozbudowanych XML'ach (1.2 mb plik to imo dość sporo), ale np. 12 krotne przewalenie pliku (żeby wydobyć po kolei parametry) chyba zaboli wydajność ? EDIT2: Wykorzystałem operator "|" do bezpośredniego dostępu do parametrów - rozwiązanie po bożemu czy niekoniecznie ? (IMG:style_emoticons/default/smile.gif) Ten post edytował masahuku 9.02.2010, 12:49:00 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%)
|
Przeczytałem 2 razy to co napisałeś i nie wiem o co chodzi najlepiej jak byś podał co chcesz osiągnąć, bo twój opis jest lekko mówiąc zagmatwany.
A jeżeli myślisz że xml 1.2mb to duży plik to jesteś w wielkim błędzie. Co miesiąc dostaje od jednej z sieci komórkowych bilingi w xml ok 60mb. i też nie wydaje mi się to dużo. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 4 Dołączył: 11.12.2009 Ostrzeżenie: (0%)
|
Mam plik xml w postaci:
Chodzi o to że parametry nie są takie same dla wszystkich obiektów więc nie mogę zrobić ->param[x] (bo nie zawsze jest na tej samej pozycji). A potrzebuję tego, bo chce stworzyć listę obiektów i dopiero z niej to obsługiwać (te parametry nie-stałe nie są mi np. w ogóle potrzebne). $rekordy=$xml->xpath("//OBIEKT[@tab='".$_tab."' and @typ='".$_typ."']/podobiekt"); - z tego otrzymuje tablice wszystkich podobiektów. Następnie chcę jakoś uzykać dostęp do np. param nazwa="costam3"->linia; Póki co zrobiłem tak i działa ale nie wiem czy to poprawny tok myślenia:
i dzięki temu mam dostęp do wszystkich parametrów a $rekord->linia odowłuje się już bezpośrednio do paramateru o nazwie costam3. Problem jest taki że tych parametrów jest dużo - czy tak rozbudowany xpath nie zwariuje ? (IMG:style_emoticons/default/smile.gif) Jak na moje to jest coś prostego ale normalnie wyjdę z siebie zaraz. Ten post edytował masahuku 9.02.2010, 13:27:15 |
|
|
|
![]() ![]() |
|
Aktualny czas: 9.06.2026 - 12:53 |