尝试从XML中提取元素并放入Array中

时间:2012-02-20 19:49:34

标签: php xml arrays

我创建了一个简单的XML文档,该文档将包含许多城市的信息。

<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
    <city>
        <id>London</id>
    </city>
    <city>
        <id>New York</id>
    </city>
</config>

我正在尝试提取城市元素并将它们放入数组中。到目前为止,我有以下内容,当我调用该函数时,输出只是Array

<?php
$configFile = 'cityConfig.xml';

function getCityConfig($configFile) {

    $xml = new SimpleXmlElement(file_get_contents("cityConfig.xml"));

    $cities = array();

    $cityId = $xml->city[0]->id;
    array_push($cities, $cityId);
    $cityId = $xml->city[1]->id;
    array_push($cities, $cityId);

    //var_dump($cities); 

    return $cities;
}

//print_r(getCityConfig($configFile)); 
echo getCityConfig($configFile); 

?>

var_dump表示正在将值添加到数组中。

array(2) { [0]=> object(SimpleXMLElement)#2 (1) { [0]=> string(6) "London" } [1]=> object(SimpleXMLElement)#4 (1) { [0]=> string(8) "New York" } } Array

我正试图在这些方面取得成果。

$cities = array(
   'London',
    'New York',
    'Paris'
);

在index.php中调用数组索引以显示内容。

$pageIntroductionContent = 'The following page brings twin cities together. Here you will find background information on  ' . $cities[0] . ', ' . $cities[1] . ' and ' . $cities[2] . '.';

我出错的任何想法?

提前致谢。

1 个答案:

答案 0 :(得分:1)

事实是,在 SimpleXMLElement 对象中,所有数据都表示为一个对象,包括属性(事实上,正如您的var_dump所暗示的那样)。因此,您可以通过转换这些对象来获取字符串,因为它们实现了我认为的_toString()方法。尝试:

$cityId = (string) $xml->city[0]->id;

它应该有用。