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%)
-----


Nie dość, że da się to załatwić w jednej pętli, to bierze ostatni, bo tylko wczytujesz w drugiej pętli jakiś dokument ale nic z nim nie robisz i wczytujesz w kólko wszystkie jakie są w tablicy
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, 18:34:37 ) *
Nie dość, że da się to załatwić w jednej pętli, to bierze ostatni, bo tylko wczytujesz w drugiej pętli jakiś dokument ale nic z nim nie robisz i wczytujesz w kólko wszystkie jakie są w tablicy

Wkleje całość:

  1.  
  2. <?php
  3.  
  4. function str2url($str, $replace = "-" ){
  5. $str = iconv('UTF- 8', 'ASCII//TRANSLIT', $str);
  6.  
  7.  
  8.  
  9. $charsArr = array( '^', "'", '"', '`', '~');
  10. $str = str_replace( $charsArr, '', $str );
  11.  
  12. $return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($str))));
  13. return str_replace(' ', $replace, $return);
  14. }
  15. /*
  16. $doc = new DOMDocument("1.0", "iso-8859-2");
  17. $doc->load("feeds.xml");
  18.  
  19. $books = $doc->getElementsByTagName('feed');
  20. foreach ($books as $feed) {
  21.   echo $feed->nodeValue, PHP_EOL;
  22.  // echo $feed -> getAttribute('id').'<br>';
  23.   $path = $feed -> getAttribute('path');
  24.   $cat_id = $feed -> getAttribute('cat_id');
  25.   // echo $feed -> getAttribute('cat_id').'<br>';
  26. //echo $path;
  27.  
  28. //$path1
  29.  */
  30.  
  31. $plik = simplexml_load_file('feeds.xml');
  32. foreach ($plik->feed as $foo)
  33. {
  34.  
  35. $idd[] = ltrim((string)$foo['path'],'/');
  36. $cat_id = (string)$foo['cat_id'];
  37.  
  38.  
  39.  
  40. }
  41. foreach ($idd as $idr){
  42.  
  43.  
  44. //echo $idr."<br>";
  45.  
  46.  
  47. $doc = new DOMDocument("1.0", "iso-8859-2");
  48. $doc->load($idr);
  49.  
  50. echo $idr;
  51.  
  52. $feed = $doc->getElementsByTagName( "feed" );
  53. }
  54. foreach ($feed as $matches)
  55. {
  56.  
  57.  
  58. $title = $matches->getElementsByTagName( "title" );
  59. $tytul = $title->item(0)->nodeValue;
  60.  
  61. $content = $matches->getElementsByTagName( "content" );
  62. $tresc = $content->item(0)->nodeValue;
  63.  
  64. $id = $matches->getElementsByTagName( "id" );
  65. $export_id = $id->item(0)->nodeValue;
  66.  
  67. $add_date = $matches->getElementsByTagName( "add_date" );
  68. $date = $add_date->item(0)->nodeValue;
  69.  
  70.  
  71. //
  72.  
  73. $tytul1 = addslashes($tytul);
  74. $tresc1 = addslashes($tresc);
  75. $date1 = addslashes($date);
  76.  
  77. mysql_connect("*******","*******","******") or die(mysql_error());
  78. mysql_query("SET NAMES utf8");
  79. mysql_select_db("********");
  80.  
  81. $tresc1;
  82.  
  83.  
  84. $tylul1a=str2Url($tytul1);
  85.  
  86. mysql_query("INSERT INTO wp_posts (post_content, post_title, post_date, ID, post_name) VALUES ('".$tresc1."', '".$tytul1."', '".$date1."', '".$export_id."', '".$tylul1a."') ON DUPLICATE KEY UPDATE ID=VALUES(ID)") or die(mysql_error());
  87.  
  88.  
  89. mysql_query("INSERT IGNORE INTO wp_term_relationships (object_id, term_taxonomy_id) VALUES ('$export_id', '2')") or die(mysql_error());
  90.  
  91. //$first = (explode("/", $path));
  92. //$path_cat = $first[1];
  93.  
  94. $path_cat = $cat_id;
  95.  
  96. if ($path_cat == 1) {
  97.  
  98. $cat = 13;
  99. }
  100.  
  101. elseif ($path_cat == 10) {
  102. $cat = 6;
  103. }
  104.  
  105. elseif ($path_cat == 80) {
  106. $cat = 8;
  107. }
  108. elseif ($path_cat == 36) {
  109. $cat = 11;
  110. }
  111.  
  112. elseif ($path_cat == 83) {
  113. $cat = 14;
  114. }
  115.  
  116. elseif ($path_cat == 84) {
  117. $cat = 12;
  118. }
  119.  
  120. elseif ($path_cat == 74) {
  121. $cat = 2;
  122. }
  123.  
  124. $reqwer = mysql_query("INSERT INTO wp_term_relationships (object_id, term_taxonomy_id) VALUES ('$export_id', '$cat')") or die(mysql_error());
  125. //var_dump($reqwer);
  126.  
  127.  
  128.  
  129. //}
  130. }
  131.  
  132. ?>
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: 9.10.2025 - 16:37