Autor Zpráva
quatzael
Profil
Ahoj, mám zase problém, jedná se o zpracování jednoduchého xml:

$xml = '<return>
  <id>65510</id>
  <title>SMART</title>
  <info/>
  <documents>
    <name>file_1.pdf</name>
    <path>http://www.domain.com/documents/file_1.pdf</path>
  </documents>
  <documents>
    <name>file_2.pdf</name>
    <path>http://www.domain.com/documents/file_2.pdf</path>
  </documents>
  <documents>
    <name>file_3.pdf</name>
    <path>http://www.domain.com/documents/file_3.pdf</path>
  </documents>
</return>';

$result = simplexml_load_string($xml);
print_r($result);

/* vypíše:
SimpleXMLElement Object
(
    [id] => 65510
    [title] => SMART
    [info] => SimpleXMLElement Object
        (
        )

    [documents] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [name] => file_1.pdf
                    [path] => http://www.domain.com/documents/file_1.pdf
                )

            [1] => SimpleXMLElement Object
                (
                    [name] => file_2.pdf
                    [path] => http://www.domain.com/documents/file_2.pdf
                )

            [2] => SimpleXMLElement Object
                (
                    [name] => file_3.pdf
                    [path] => http://www.domain.com/documents/file_3.pdf
                )

        )

)
*/
$_VALUE['title'] = $result->title;
print_r($_VALUE);

/* vypíše:
Array
(
    [title] => SimpleXMLElement Object
        (
            [0] => SMART
        )

)
*/

foreach ($result->documents as $key=>$value) {
echo $key . "<br/>";
}
/* vypíše:
documents 
documents 
documents 

místo, aby vypsal:
1
2
3
*/

V prvním výpise (print_r($result);) se zdá, že xml byl bez problému převeden na objekt.

Ale místo, aby v případě $_VALUE['title'] = $result->title; byla hodnota $_VALUE['title'] přímo string "SMART" je to znovu objekt/array..

A ten foreach už vůbec nechápu, že se chová takhle..

Jde to prosím nějak ošetřit, aby to fungovalo jak má?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: