Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP]Porównanie obiektów
Forum PHP.pl > Forum > Przedszkole
new_user
Mam plik xml który przepraswoałem za pomocą simplexml ponizej przedstawie urywki pliku xml
  1. <rodzic>
  2. <ksiazki>
  3. <ksiazka indeks="12345">
  4. <autorzy><![CDATA[.]]></autorzy>
  5. <tytul><![CDATA[Tytul ksiazki]]></tytul>
  6. <tematyka>IN</tematyka>
  7. <opis><![CDATA[Opis ksiazki!]]></opis>
  8. </ksiazka>
  9. </ksiazki>
  10. <kategorie>
  11. <kategoria skrot="SL" opis=" "/>
  12. <kategoria skrot="HR" opis="Humor"/>
  13. <kategoria skrot="TR" opis="Turystyka"/>
  14. <kategoria skrot="AR" opis="Archeologia"/>
  15. <kategoria skrot="IN" opis="Informatyka"/>
  16. </kategorie>
  17. </rodzic>


parsowałem w ten sposob

  1. foreach ($xml_pelny->ksiazki->ksiazka as $ksiazk) {
  2. $ksiazk->autorzy = preg_replace("/(\r\n|\n|\r)/", "", $ksiazk->autorzy);
  3. $ksiazk->tytul = preg_replace("/(\r\n|\n|\r)/", "", $ksiazk->tytul);
  4. $ksiazk->opis = preg_replace("/(\r\n|\n|\r)/", "", $ksiazk->opis);
  5.  
  6. echo '<b>autorzy -> nazwa:</b> '.$ksiazk->autorzy.'<br />';
  7. echo '<b>tytul -> tytul_1:</b> '.$ksiazk->tytul.'<br />';
  8. echo '<b>opis -> opis_1:</b> '.$ksiazk->opis.'<br />';
  9. echo '<b>tematyka -> tematyka_1:</b> '.$ksiazk->tematyka.'<br />';
  10. }


wszsytko ladnie parsuje wyswietla jednak mam problem z warunkiem chcialbym zrobic cos takiego ze porownoje ksiazka->tematyka do atrybutu skrót z kategoria
czyli cos takiego sprawdza czy skrot z pola
  1. <tematyka>IN</tematyka>
jest tym samym co skrot z
  1. <kategoria skrot="SL" opis=" "/>
jezeli tak wyswietla opis danego skrotu
  1. foreach ($xml_pelny->kategorie->kategoria as $kategori) {
  2. if ($kategori->attributes()->symbol==$ksiazka->tematyka){
  3. echo $kategori->attributes()->opis;
  4. }
  5. }


To co teraz jest nie sprawda warunkow.
Mysle ze dobrze wytlumaczylem
skowron-line
Cytat
porownoje ksiazka->tematyka do atrybutu skrót z kategoria

tu sktót, tam symbol.
  1. foreach ($xml_pelny->kategorie->kategoria as $kategori) {
  2. if ($kategori->attributes()->symbol==$ksiazka->tematyka){
  3. echo $kategori->attributes()->opis;
  4. }
  5. }
  6.  
new_user
Czy mozna to w jakiś spsób sprawdzić? Czy raczej tego typu porówniania nie d asię zrobic? Jezeli tak to w jaki sposob to zrobic
skowron-line
Cytat(new_user @ 19.03.2010, 08:31:25 ) *
Czy mozna to w jakiś spsób sprawdzić? Czy raczej tego typu porówniania nie d asię zrobic? Jezeli tak to w jaki sposob to zrobic

Chyba czegoś nie zrozumiałeś w xml który podałeś nie ma atrybutu symbol dla węzła kategoria.
new_user
sorry mialo byc tak nie symbol a skrot pomylka i przepraszam

  1. foreach ($xml_pelny->kategorie->kategoria as $kategori) {
  2. if ($kategori->attributes()->skrot==$ksiazka->tematyka){
  3. echo $kategori->attributes()->opis;
  4. }
  5. }


chodzi o takie porownanie jednak to nei dziala
woodzu
spróbuj przed iteracją sklonować obiekt

  1. $xml_copy = clone $xml_pelny;
new_user
NIestety clone też nie pomogło. Moze jakis inny sposob. Musze ten warunek sprawdzic.
pp_nt
Cytat(new_user @ 19.03.2010, 09:10:44 ) *
sorry mialo byc tak nie symbol a skrot pomylka i przepraszam

  1. foreach ($xml_pelny->kategorie->kategoria as $kategori) {
  2. if ($kategori->attributes()->skrot==$ksiazka->tematyka){
  3. echo $kategori->attributes()->opis;
  4. }
  5. }


chodzi o takie porownanie jednak to nei dziala


CODE
if ("$kategori->attributes()->skrot" == "$ksiazka->tematyka")

Tak działa smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.