[PHP] Odczyt XML |
[PHP] Odczyt XML |
4.07.2019, 12:02:46
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.07.2019 Ostrzeżenie: (0%) |
Dzień dobry, mam pewien problem dotyczący odczytu pliku XML.
Posiadam poniższą strukturę (urywek kodu) - standard ceneo.
Moim zamiarem jest przeszukanie całego pliku XML - wyszukanie w nim odpowiedniego numeru EAN a następnie pobranie ceny produktu, który ma ten EAN przypisany. Oto częśc mojego kodu:
Chodzi mi dokładniej o pomoc w zapisaniu ścieżki. Nie mam problemu kiedy każdy parametr jest w osobnym znaczniku. Natomiast tutaj w jednym znaczniku <a> jest name="Producent", name="Kod_Producenta", name="EAN". W jaki sposób to zapisać? Ten post edytował Puchatek 4.07.2019, 12:22:04 |
|
|
4.07.2019, 12:54:39
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Nie jestem ekspertem w XPath, ale takie coś działa:
Kod //o[descendant::attrs/a[@name='Producent' and text()='abc']][descendant::attrs/a[@name='Kod_Producenta' and text()='abc']][descendant::attrs/a[@name='EAN' and text()='abc']] Być może można to uprościć. Działa jeśli oczywiście wstawisz coś własnego pod "abc". |
|
|
4.07.2019, 13:52:40
Post
#3
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.07.2019 Ostrzeżenie: (0%) |
|
|
|
4.07.2019, 14:05:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Kod '//o/attrs/a[@name="EAN"][contains(text(),' . $ZmiennaEAN . ')]/../..' Polecam: 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 -------------------- |
|
|
4.07.2019, 15:05:49
Post
#5
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.07.2019 Ostrzeżenie: (0%) |
Dziękuję za pomoc, wygląda na to, że jest ok, natomiast pozostaje jeszcze pętla foreach, w której pobierana jest cena.
Spróbowałem na 2 sposoby. 1.
2.
Żaden z powyższych sposobów nie pobiera potrzebnych danych. Ten post edytował Puchatek 4.07.2019, 15:07:36 |
|
|
4.07.2019, 15:10:52
Post
#6
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) |
Napisz, co zwraca $oImageSection.
|
|
|
4.07.2019, 17:48:36
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
-------------------- |
|
|
8.07.2019, 11:40:04
Post
#8
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.07.2019 Ostrzeżenie: (0%) |
Po zastosowaniu w/w sposobu otrzymuję takie komunikaty.
Przeszukiwałem internet w celu rozwiązania tego problemu, jednak nic nie pomaga. Kod Warning: DOMDocument::loadXML(): Start tag expected, '<' not found in Entity, line: 1 in ...
Warning: DOMDocument::loadXML(): Start tag expected, '<' not found in Entity, line: 1 in ... Warning: DOMDocument::loadXML(): Start tag expected, '<' not found in Entity, line: 1 in ... Warning: DOMDocument::loadXML(): Start tag expected, '<' not found in Entity, line: 1 in ... Ten post edytował Puchatek 8.07.2019, 11:40:31 |
|
|
8.07.2019, 12:41:50
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 837 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
|
|
|
8.07.2019, 15:01:30
Post
#10
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.07.2019 Ostrzeżenie: (0%) |
Niestety, ale nadal całość nie funkcjonuje.
Nie zostaje wyświetlona żadna wartość.
|
|
|
8.07.2019, 16:07:05
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
A wartość tekstową atrybutu name z cdata dostajesz? Pamiętam że coś trzeba było włączyć do parsowania.
-------------------- |
|
|
8.07.2019, 16:24:04
Post
#12
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) |
link link
Chyba chodzi o Cytat public bool $preserveWhiteSpace = TRUE ; , ale nie jestem pewien.@Puchatek, zapisz plik z kodowaniem UTF-8 z BOM i sprawdź, czy pójdzie. Jeśli, nie to zapisz ten plik z kodowaniem UTF-8 bez BOM. Popróbuj tak z dwoma plikami, tym "index.php" i tym "index.xml". BOM - Byte Order Mark. Ten post edytował Neutral 8.07.2019, 16:32:30 |
|
|
10.07.2019, 08:16:54
Post
#13
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.07.2019 Ostrzeżenie: (0%) |
Zmiany w kodowaniach również nie pomogły.
Chyba odpuszczam temat z wykorzystaniem tego XMLa, mam jeszcze możliwość pobierania tych samych danych z API tylko muszę poszerzyć swoją wiedzę na ten temat. Dziękuję bardzo za pomoc. |
|
|
10.07.2019, 08:23:42
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A może pokażesz ten XML? Czy dostarczasz poprawną strukturę dla metody load?
-------------------- |
|
|
11.07.2019, 14:30:14
Post
#15
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.07.2019 Ostrzeżenie: (0%) |
Struktura wygląda tak. Całego pliku XML nie mogę udostępnić ze względu na umowę.
|
|
|
11.07.2019, 14:49:16
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Brakuje cudzysłowów. Query będzie mieć taką postać:
-------------------- |
|
|
11.07.2019, 15:09:50
Post
#17
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.07.2019 Ostrzeżenie: (0%) |
Udało się, cudzysłów pomógł, serdecznie dziękuję wszystkim za pomoc
|
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 01:58 |