Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML][PHP] Jak wziąć wszystkie pozycje z XML'a?
Frugo75
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Witam ponownie.
Nie wiem jak zrobić jedną (wydaje się prostą) rzecz. Mianowicie utknąłem w xmlu.

Mam plik feeds który wygląda tak:
  1. <feeds>
  2. <feed id="158477" cat_id="1" add_date="2014-05-21 13:44:05" mod_date="0000-00-00 00:00:00" path="/1/2014-05-21/158477/158477.xml"/>
  3. <feed id="158476" cat_id="36" add_date="2014-05-21 13:32:19" mod_date="0000-00-00 00:00:00" path="/36/2014-05-21/158476/158476.xml"/>
  4. <feed id="158476" cat_id="21" add_date="2014-05-21 13:32:19" mod_date="0000-00-00 00:00:00" path="/21/2014-05-21/158476/158476.xml"/>
  5. <feed id="158473" cat_id="1" add_date="2014-05-21 13:06:26" mod_date="0000-00-00 00:00:00" path="/1/2014-05-21/158473/158473.xml"/>
  6. <feed id="158471" cat_id="83" add_date="2014-05-21 13:22:44" mod_date="2014-05-21 12:56:16" path="/83/2014-05-21/158471/158471.xml"/>
  7. <feed id="158471" cat_id="21" add_date="2014-05-21 13:22:44" mod_date="2014-05-21 12:56:16" path="/21/2014-05-21/158471/158471.xml"/>
  8.  
  9. </feeds>


I tutaj skryptem chcę wyciągać wszytkie "feed", parsować i dodawać do bazy:

  1. $doc = new DOMDocument("1.0", "iso-8859-2");
  2. $doc->load("feeds.xml");
  3.  
  4. $books = $doc->getElementsByTagName('feed');
  5. foreach ($books as $feed) {
  6. echo $feed->nodeValue, PHP_EOL;
  7.  
  8. $path = $feed -> getAttribute('path');
  9. $cat_id = $feed -> getAttribute('cat_id');
  10.  
  11. $path1 = substr($path, "1");
  12.  
  13.  
  14. $doc = new DOMDocument("1.0", "iso-8859-2");
  15.  
  16. $doc->load("$path1");
  17.  
  18. $feed = $doc->getElementsByTagName( "feed" );
  19. foreach ($feed as $matches)
  20. {
  21. $title = $matches->getElementsByTagName( "title" );
  22. $tytul = $title->item(0)->nodeValue;
  23.  
  24. $content = $matches->getElementsByTagName( "content" );
  25. $tresc = $content->item(0)->nodeValue;
  26.  
  27. $id = $matches->getElementsByTagName( "id" );
  28. $export_id = $id->item(0)->nodeValue;
  29.  
  30. $add_date = $matches->getElementsByTagName( "add_date" );
  31. $date = $add_date->item(0)->nodeValue;
  32.  


I teraz nie umiem wziąć wszystkich "feed", biore tylko jedno.
Czy pomoże mi ktoś wziąć wszystkie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Tworzysz tablicę $idd po to, żeby lecieć po niej potem foreachem i deklarujesz zmienną $feed, którą znowu traktujesz foreachem. Zauważ, że to bez sensu powtarzać to samo enty raz.
Go to the top of the page
+Quote Post
Frugo75
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Turson @ 26.05.2014, 22:40:07 ) *
Tworzysz tablicę $idd po to, żeby lecieć po niej potem foreachem i deklarujesz zmienną $feed, którą znowu traktujesz foreachem. Zauważ, że to bez sensu powtarzać to samo enty raz.


OK. Tylko to jest taki układ, że plik feed.xml pokazuje ścieżki do innych plików xml, które to właśnie pliki mają być wrzucane do bazy.
A jak robię tak jak Wy podpowiadacie to mam bład: Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : Start tag expected, '<' not found in /mundial/news/index.php on line 46

a kod mam taki

  1.  
  2.  
  3. $plik = new SimpleXMLElement('feeds.xml');
  4.  
  5. foreach($plik->feeds->feed as $v){
  6.  
  7. $id = (string)$v['path'];
  8. echo $id;
  9.  
  10.  
  11. }


Ten post edytował Frugo75 26.05.2014, 21:46:56
Go to the top of the page
+Quote Post

Posty w temacie
- Frugo75   [XML][PHP] Jak wziąć wszystkie pozycje z XML'a?   21.05.2014, 13:09:04
- - Turson   Bierzesz jedno bo tablicę musisz powiększać nie ...   21.05.2014, 13:27:32
|- - Frugo75   Cytat(Turson @ 21.05.2014, 14:27:32 )...   21.05.2014, 13:32:15
- - Turson   Ja bym to zrobił z użyciem SimpleXML bo jak sama n...   21.05.2014, 14:04:12
|- - Frugo75   Cytat(Turson @ 21.05.2014, 15:04:12 )...   22.05.2014, 08:59:29
- - owca_82   Pobiera jedną wartość bo $idd nie jest tablic...   22.05.2014, 17:00:20
|- - Frugo75   Cytat(owca_82 @ 22.05.2014, 18:00:20 ...   23.05.2014, 08:03:34
- - ibalyx   tak jak koledzy piszą $idd[] jest tablicą. wi...   23.05.2014, 13:45:10
|- - Frugo75   Cytat(ibalyx @ 23.05.2014, 14:45:10 )...   26.05.2014, 11:04:10
- - nospor   Bujasz sie z tym banalnym problemem od paru dni......   26.05.2014, 11:09:57
|- - Frugo75   CytatCytat(nospor @ 26.05.2014, 12:09...   26.05.2014, 11:14:08
- - nospor   Albo mozesz zrobic jak ci pisano na samym poczatku...   26.05.2014, 11:15:11
|- - Frugo75   Cytat(nospor @ 26.05.2014, 12:15:11 )...   26.05.2014, 11:20:27
- - nospor   To dlatego masz to wrzucac do tablicy. Pisano ci j...   26.05.2014, 11:21:24
|- - Frugo75   Cytat(nospor @ 26.05.2014, 12:21:24 )...   26.05.2014, 11:23:10
- - nospor   Nie watpie ze latwiej by ci bylo ogarnac, jakby kt...   26.05.2014, 11:24:22
|- - Frugo75   Cytat(nospor @ 26.05.2014, 12:24:22 )...   26.05.2014, 14:34:14
- - nospor   Czemu dales foreach w foreach? Przeciez to nie ma ...   26.05.2014, 14:39:39
|- - Frugo75   Cytat(nospor @ 26.05.2014, 15:39:39 )...   26.05.2014, 15:12:45
- - nospor   Nadal masz petle w petli..... ltrim nie kasuje pet...   26.05.2014, 15:17:50
|- - Frugo75   Cytat(nospor @ 26.05.2014, 16:17:50 )...   26.05.2014, 15:28:53
- - nospor   Nic jej nie kasuje.... ciagle masz petle w petli.....   26.05.2014, 15:31:35
|- - Frugo75   Cytat(nospor @ 26.05.2014, 16:31:35 )...   26.05.2014, 16:38:53
- - Turson   Nie dość, że da się to załatwić w jednej pętli, to...   26.05.2014, 17:34:37
|- - Frugo75   Cytat(Turson @ 26.05.2014, 18:34:37 )...   26.05.2014, 17:53:27
- - nospor   W petli masz takie cos: $feed = $doc-...   26.05.2014, 20:08:49
|- - Frugo75   Cytat(nospor @ 26.05.2014, 21:08:49 )...   26.05.2014, 21:06:33
- - nospor   CytatMoże to nie temat do przedszkola?No nie, zaro...   26.05.2014, 21:13:58
|- - Frugo75   Cytat(nospor @ 26.05.2014, 22:13:58 )...   26.05.2014, 21:16:07
- - nospor   Ja nadal nie ogarniam, czemu sie uparles ze te sci...   26.05.2014, 21:20:00
|- - Frugo75   Cytat(nospor @ 26.05.2014, 22:20:00 )...   26.05.2014, 21:30:34
- - nospor   Tak jak ci napisalismy podajac przykladowy kod - w...   26.05.2014, 21:34:10
|- - Frugo75   Cytat(nospor @ 26.05.2014, 22:34:10 )...   26.05.2014, 21:37:26
- - Turson   Tworzysz tablicę $idd po to, żeby lecieć po n...   26.05.2014, 21:40:07
|- - Frugo75   Cytat(Turson @ 26.05.2014, 22:40:07 )...   26.05.2014, 21:45:18
- - nospor   Musisz wszystko robic na bieżaco [PHP] pobierz, p...   27.05.2014, 07:46:19
|- - Frugo75   Cytat(nospor @ 27.05.2014, 08:46:19 )...   27.05.2014, 11:25:55
- - nospor   1) Łączenie z bazą ma być poza pętlami... 2) I co,...   27.05.2014, 11:33:34
|- - Frugo75   Cytat(nospor @ 27.05.2014, 12:33:34 )...   27.05.2014, 11:37:24
- - nospor   Cytat2. Wrzuca pierwszą z feeds.xml i info "D...   27.05.2014, 12:05:53
|- - Frugo75   Cytat(nospor @ 27.05.2014, 13:05:53 )...   27.05.2014, 12:22:19
- - nospor   Nie, bo dales DIE a DIE konczy wykonywanie skryptu...   27.05.2014, 12:30:27
- - Frugo75   Cytat(nospor @ 27.05.2014, 13:30:27 )...   27.05.2014, 13:14:35


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

 



RSS Aktualny czas: 4.10.2025 - 15:02