XML parse

Programovacie jazyky, rady, poradňa...
Snacker
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 362
Registrovaný: 08 jún 2009, 22:42
Kontaktovať používateľa:

XML parse

Príspevok od používateľa Snacker »

Zdravim,

Mam napr. takyto XML dokument:

Kód: Vybrať všetko

<kniha>

  <kapitola>
    <nadpis>Nieco</nadpis>
    <text>Toto je ukazkovy text</text>
  </kapitola>
  
  <kapitola>
    <nadpis>Nieco 2</nadpis>
    <text>Totoje druhy ukazkovy v ktorom je <citat>citat</citat></text>
  </kapitola>
  
  <kapitola>
    <nadpis>Nieco 3</nadpis>
    <basen>Tu je ukazkova basen</basen>
  </kapitola>
  
</kniha>

Potrebujem tento XML dokument prekonvertovat do klasickeho textu:

Mam kod:

Kód: Vybrať všetko

<?php
$kniha = "test.xml";

$xml = simplexml_load_file($kniha); 

foreach($xml->kapitola as $kapitola) { 

        echo '<h1>'.$kapitola->nadpis.'</h1>';
        echo '<p>'.$kapitola->text.'</p>';
 
        }
?>
Vystup z tohoto skriptu je:

Nieco

Toto je ukazkovy text

Nieco 2

Totoje druhy ukazkovy v ktorom je

Nieco 3

No chcel by som aby bol vystup nieco v zmysle:

Nieco

Toto je ukazkovy text

Nieco 2

Totoje druhy ukazkovy v ktorom je citat

Nieco 3

Tu je ukazkova basen

Teda neviem dopredu ci sa v kapitole nachadza nasen alebo text a taktiez neviem ci sa v texte nachadza citat. Ako najefektivnejsie tieto veci osetrit tak, aby som vedel predpokladat ze pridu a zobrazit ich, prip. este napr. <citat> a <basen> dat do <i> ?

Dakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: XML parse

Príspevok od používateľa audiotrack »

takto si sprav pre každú položku:

Kód: Vybrať všetko

if(isset($kapitola->text)) echo '<p>'.$kapitola->text.'</p>';
ak tam bude, tak sa vypíše, ak nebude, tak sa nevypíše. Ak chceš citat nahradiť za i, tak by som spravil niečo ako

Kód: Vybrať všetko

$kapitola->text = str_replace(array("<citat>","</citat>"),array("<i>","</i>"),$kapitola->text);
Napísať odpoveď