从xml解析时转换SimpleXMLElement对象

时间:2013-03-29 18:48:15

标签: php xml simplexml

$drivetracker = simplexml_load_file('geot_5980.xml');
$data = array();
foreach ($drivetracker->plays->qtr as $qtr):
foreach ($qtr->play as $myplay):
$hasball = $myplay['hasball'];
$play = $myplay['spot'];
$down = $myplay['down'];
$togo = $myplay['togo'];
$type = $myplay['type'];
$text = $myplay['text'];
array_push($data, array("text" => $text,                
            "spot" => $play,
            "ball" => $hasball,
            "togo" => $togo,
            "type" => $type,
            "drive"=> $drive)
               );
endforeach;
endforeach;
print_r($data);

我明白了......

[16] => Array
        (
            [text] => SimpleXMLElement Object
                (
                    [0] => Tanner, C. kick attempt good.
                )

            [spot] => SimpleXMLElement Object
                (
                    [0] => DU03
                )

            [ball] => SimpleXMLElement Object
                (
                    [0] => GT
                )

            [togo] => SimpleXMLElement Object
                (
                    [0] => 0
                )

            [type] => SimpleXMLElement Object
                (
                    [0] => X
                )

            [drive] => 7
        )

    [17] => Array
        (
            [text] => SimpleXMLElement Object
                (
                    [0] => Tanner, C. kickoff 51 yards to the DU14, Butler, L return 16 yards to the DU30 (Noble, D.).
                )

            [spot] => SimpleXMLElement Object
                (
                    [0] => GT35
                )

            [ball] => SimpleXMLElement Object
                (
                    [0] => GT
                )

            [togo] => SimpleXMLElement Object
                (
                    [0] => 0
                )

            [type] => SimpleXMLElement Object
                (
                    [0] => K
                )

            [drive] => 7
        )

)

我的问题是......我如何制作它而不是

[text] => SimpleXMLElement Object
                (
                    [0] => Tanner, C. kick attempt good.
                )

我得到了

[text] = > "Tanner, C. kick attempt good."

2 个答案:

答案 0 :(得分:4)

而不是:

$hasball = $myplay['hasball'];
$play = $myplay['spot'];
$down = $myplay['down'];
$togo = $myplay['togo'];
$type = $myplay['type'];
$text = $myplay['text'];

您想致电:

$hasball = (string) $myplay['hasball'];
$play = (string) $myplay['spot'];
$down = (string) $myplay['down'];
$togo = (string) $myplay['togo'];
$type = (string) $myplay['type'];
$text = (string) $myplay['text'];

通过使用(string)进行转换,它将以XML形式返回XML标记的内容。

答案 1 :(得分:1)

如果您将SimpleXMLElement类型转换为字符串,您将获得其值。 所以这应该有效:

array_push($data, array(
    "text" => (string)$text,                
    "spot" => (string)$play,
    "ball" => (string)$hasball,
    "togo" => (string)$togo,
    "type" => (string)$type,
    "drive"=> (string)$drive)
);