Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SimpleXML] Odczyt atrybutu
panbobek44
post 9.08.2018, 23:47:27
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 16.12.2005

Ostrzeżenie: (0%)
-----


Cześć,

mam plik XML z którego nie potrafię odczytać atrybutu price. Kategorię, nazwę, opis i linki do zdjęć pobierają się poprawnie. Proszę o pomoc.

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <offers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1">
  3. <o id="33" price="68.38" avail="1" set="0" weight="0.3" basket="1" stock="1407">
  4. <cat><![CDATA[Baterie]]></cat>
  5. <name><![CDATA[Bateria 10.8V 6 cell]]></name>
  6. <desc><![CDATA[Opis: Pojemność: 4400 mAh]]></desc>
  7. <imgs>
  8. <main url="https://xxx.pl/20422/test.jpg"/>
  9. <i url="https://xxx.pl/20423/test.jpg"/>
  10. <i url="https://xxx.pl/20424/test.jpg"/>
  11. </imgs>
  12. <attrs>
  13. <a name="Producent"><![CDATA[XXX]]></a>
  14. <a name="Kod_producenta"><![CDATA[XX33]]></a>
  15. <a name="EAN"><![CDATA[353453]]></a>
  16. </attrs>
  17. </o>
  18. </offers>


  1. <?php
  2.  
  3. $xml = simplexml_load_file('get.xml') or die("error!!");
  4. $i = 0;
  5. foreach($xml->children() as $temp) {
  6. $produkt[$i]["cat"] = $temp->cat;
  7.  
  8. $produkt[$i]["name"] = $temp->name;
  9.  
  10. $produkt[$i]["desc"] = $temp->desc;
  11.  
  12. $produkt[$i]["imgs"] = $temp->imgs->main['url'];
  13.  
  14. $produkt[$i]["price"] = $temp->o['price'];;
  15.  
  16. $i++;
  17. }
  18.  
  19.  
  20. $i = 1;
  21.  
  22. echo $produkt[$i]["cat"];
  23. echo "<br />";
  24.  
  25. echo $produkt[$i]["name"];
  26. echo "<br />";
  27.  
  28. echo $produkt[$i]["desc"];
  29. echo "<br />";
  30.  
  31. echo $produkt[$i]["imgs"];
  32. echo "<br />";
  33.  
  34. echo "cena: ", $produkt[$i]["price"];
  35. echo "<br />";
  36. ?>
Go to the top of the page
+Quote Post
Pyton_000
post 10.08.2018, 07:27:41
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


(string)$temp->cat

itd.
Go to the top of the page
+Quote Post
panbobek44
post 10.08.2018, 09:26:39
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 16.12.2005

Ostrzeżenie: (0%)
-----


Czy w ten sposób odczytam ten atrybut price="68.38"?
Go to the top of the page
+Quote Post
Pyton_000
post 10.08.2018, 09:43:59
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Nie, musisz pobrać najpierw atrybuty:

http://php.net/manual/en/simplexmlelement.attributes.php
Go to the top of the page
+Quote Post
panbobek44
post 10.08.2018, 13:46:14
Post #5





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 16.12.2005

Ostrzeżenie: (0%)
-----


Dzięki za wskazówkę. Wszystko działa jak należy.

  1. <?php
  2. $xml = simplexml_load_file('get.xml') or die("error!!");
  3. $i = 0;
  4. foreach($xml->children() as $temp) {
  5. $produkt[$i]["cat"] = $temp->cat;
  6.  
  7. $produkt[$i]["name"] = $temp->name;
  8.  
  9. $produkt[$i]["desc"] = $temp->desc;
  10.  
  11. $produkt[$i]["imgs"] = $temp->imgs->main['url'];
  12.  
  13. $produkt[$i]["price"] = $temp->o['price'];;
  14.  
  15. foreach($xml->o[$i]->attributes() as $a => $b) {
  16. $produkt[$i][$a] = $b;
  17. }
  18.  
  19. $i++;
  20. }
  21.  
  22.  
  23. $i = rand(1, 990);
  24.  
  25. echo $produkt[$i]["cat"];
  26. echo "<br /><br />";
  27.  
  28. echo $produkt[$i]["name"];
  29. echo "<br /><br />";
  30.  
  31. echo $produkt[$i]["desc"];
  32. echo "<br /><br />";
  33.  
  34. echo $produkt[$i]["imgs"];
  35. echo "<br /><br />";
  36.  
  37. echo "cena: ", $produkt[$i]["price"];
  38. echo "<br /><br />";
  39.  
  40. echo "adres: ", $produkt[$i]["url"];
  41. echo "<br /><br />";
  42. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 03:01