Kako v PHP-ju iz SimpleXMLElement-a dobiti string? Zelo zanimiva zadeva.

1
2
3
4
5
6
$data  = "<?xml version=\"1.0\" encoding=\"utf-8\">";
$data .= &quot;<xml><node>tekst</node></xml>&quot;;
 
$xml = new SimpleXMLElement($data);
$string =  $xml-&gt;node;
var_dump($string);

No, zgornja koda bi po pričakovanju morala izpisati:

1
tekst

Vrne pa:

1
2
3
4
object(SimpleXMLElement)#2 (1) {
[0]=&gt;
string(5) &quot;tekst&quot;
}

Kaj pa če napiš¡emo:

1
echo $xml-&gt;node;

Takrat izpiše:

1
tekst

Torej problem je, da v nam spremenljivko shrani SimpleXMLElement objekt, izpiše pa string. To zna biti nerodno sploh pri ajax zadevah - npr: v array shranimo neke stringe in jih spustimo preko funkcije json_encode in preko js-ja pošljemo na clienta. Namesto stringov, pa so notri objekti. Ni vredu. Sodelavc je poštudiru, da se da zadeva rešit na zelo simpl način in sicer:

1
$string = &quot;&quot;.$xml-&gt;node;

Sedaj pa tudi var_dump izpiše prav:

1
string(5) &quot;tekst&quot;

Se pravi, da dodamo prazen string in zadeva je rešena. :D Očitno php nekaj interno zmučka s tem objektom, kaj pa sam bog ve. No, važno, da dela. Upam, da bo ta "trik" komu prišel še prav, meni prav gotovo je. :)

0%
0%