[PHP][XML]Pobranie danych z tagu xml |
[PHP][XML]Pobranie danych z tagu xml |
13.07.2019, 14:32:18
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.07.2019 Ostrzeżenie: (0%) |
Witam.
Mam taki kod w xml <size> <stock id="0" quantity="0.000"/> <stock id="1" quantity="34" location_id="40" location_text_id="Magazyn główny\13L"/> <stock id="2" quantity="2"/> </size> Mam problem z pobraniem danych quantity w przypadku jeżeli w tagu stock id="1". Czyli chciałbym wyciągnąć wartość 34 z quantity. Próbowałem w ten sposób /sizes/size/stock[@id="1"][quantity] ale nic z tego. co należy wpisać po [@id="1"] aby pobrało wartość quantity. |
|
|
13.07.2019, 18:05:39
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Kod //sizes/size/stock[@id="1"] ->getAttribute('quantity'); http://forum.php.pl/index.php?s=&showt...t&p=1243305 https://kawalekkodu.pl/the-tag-is-out-there...domxpath-s01e01 https://kawalekkodu.pl/the-tag-is-out-there...domxpath-s01e02 https://kawalekkodu.pl/the-tag-is-out-there...domxpath-s01e03 https://kawalekkodu.pl/the-tag-is-out-there...domxpath-s01e04 -------------------- |
|
|
13.07.2019, 18:50:53
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.07.2019 Ostrzeżenie: (0%) |
A jest możliwość żeby to zadziałało w "xQuery tester" bo po dopisaniu tego polecenia nie wyświetla wyników a mój moduł przyjmuje to tylko w takiej wersji
W przypadku wywołania sizes/size/stock[@id="1"] otrzymuje: <?xml version="1.0" encoding="UTF-8"?> <stock xmlns:iaiext="http://www.iai-shop.com/developers/iof/extensions.phtml" id="1" quantity="34" location_id="40" location_text_id="Magazyn główny\13L"/> A tu chodzi żebym otrzymał tylko wartość quantity dla rekordów z id="1" |
|
|
13.07.2019, 19:13:10
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Kod string(//size/stock[@id="1"]/@quantity)
-------------------- |
|
|
31.07.2019, 17:26:00
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.07.2019 Ostrzeżenie: (0%) |
Działa
Dzięki za pomoc choć samo dzięki za podzielenie się wiedzą na tym forum to za mało i podziwiam takich ludzi którzy służą bezinteresownie innym. A tak w ogóle to stosowałem ten zapis tyle że nie wpadłem na to że w xQuery muszę dodać na wstępie string Witam. Ponownie a może tak kontynuując o krok dalej mam pytanie czy jest opcja łączenia wartości. Chciałbym z kodu: <parameter> <value priority="0" name="Panel"/> <value priority="1" name="FM"/> <value priority="2" name="USB"/> </parameter> Pobrać naraz wszystkie dane paramteru "name". Czyli żeby wynikiem było np coś takiego: "Panel. FM. USB." Wpisująć w xQuery tester polecenie string (//parameter/value[@priority="1"]/@name) otrzymuje wynik: "Panel" Jednak jeżeli już próbuje połączyć wyniki w jeden ciąg poniższym poleceniem: string (//parameter/value[@priority="1"]/@name) | (//parameter/value[@priority="2"]/@name) nic nie wychodzi. Jest jakiś sposób aby połączyć wszystkie wartości "name" najlepiej oddzielając je w wyniku spacją lub kropką. Będę wdzięczny za pomoc bo już przesiedziałem drugi dzień nad tym rozwiązaniem i nic Ten post edytował speszi 31.07.2019, 17:34:22 |
|
|
31.07.2019, 17:38:09
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A dlaczego na siłę znów wciskasz tam nawiasy kwadratowe?
Do łączenia używa się concat, podałem Ci linki z przykładami. -------------------- |
|
|
31.07.2019, 20:58:59
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.07.2019 Ostrzeżenie: (0%) |
Dzięki.
Szczerze mówiąc to przeglądałem te linki ale nie znalazłem nic o concat i wogóle ciężko cokolwiek znaleź w dokumantacjach na temat tej funkcji a przecież nie jest czymś wyjątkowym. Zapis jaki przyniósł zamierzony efekt to: string (//parameter/(concat (value[@priority="0"]/@name, value[@priority="1"]/@name, value[@priority="2"]/@name))) Próbowałem jeszcze to uprościć aby nie powtarzać @priority dla każdego indeksu (gdyby się okazało że jest ich ok. 50) tylko żeby polecenie z automatu połączyło wszystkie wartości @name ze wszystkich tagów "value" ale bez efektów więc zadowole się takim rozwiązaniem. |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 04:36 |