2014-02-25 88 views
0

我想从一个数组的foreach循环中获取一个xml文件,但即时获取xml文件中只有一行。如何将数组转换为xml

是否有另一种方法将数组数据转换为XML格式的文件?

PHP:

$item = array(); 
     $item[] = array('CityId' => $row['city_id'], 
         'StateId' => $row['state_id'], 
         'CityName' => $row['city_name'] 
         ); 

     $break = "<br />"; 
     $quote = '"'; 
     $xml = "<data>"."\n"; 
     foreach($item as $_item) { 

      echo $xml .= "<city CityId=$quote" . $_item['CityId'] . "$quote StateId=$quote" . $_item['StateId'] . "$quote CityName=$quote" . $_item['CityName'] . "$quote />\n"; 

     } 
     $xml .= "</data>"; 
     $sxml = new SimpleXMLElement($xml); 
     echo $output = $sxml->asXML("data.xml"); 

输出data.xml中:

<data> 
<city CityId="1" StateId="217" CityName="New York" /> 
<city CityId="2" StateId="218" CityName="New Jersey" /> 
</data> 

任何帮助表示赞赏。

+0

你读过http://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml?它应该给你一些开始。 – Brice

+0

是的,我看过那篇文章,格式不一样。 – Dario

+0

我的问题是,即时只获得1行,而不是10,100,或数组中有多少。 – Dario

回答

1

数据:

$cities = array(
     array(
      'cityId' => 1, 
      'stateId' => 217, 
      'cityName' => 'New York' 
     ), 
     array(
      'cityId' => 2, 
      'stateId' => 0, 
      'cityName' => 'Paris' 
     ), 
    ); 

此:

$xml = new SimpleXMLElement('<data/>'); 
foreach ($cities as $key => $city) 
{ 
    $xml->city[$key]['cityId'] = $city['cityId']; 
    $xml->city[$key]['stateId'] = $city['stateId']; 
    $xml->city[$key]['cityName'] = $city['cityName']; 
} 

OR(更好):

xml = new SimpleXMLElement('<data/>'); 
foreach ($cities as $cityData) 
{ 
    $city = $xml->addChild('city'); 
    $city->addAttribute('cityId', $cityData['cityId']); 
    $city->addAttribute('stateId', $cityData['stateId']); 
    $city->addAttribute('cityName', $cityData['cityName']); 
} 

将输出:

<data> 
    <city cityId="1" stateId="217" cityName="New York" /> 
    <city cityId="2" stateId="0" cityName="Paris" /> 
</data> 
+0

你好布里斯,这是我需要的,你能告诉我如何格式化outpup XML?我的意思是输出全部内联。 Thx很多 – Dario

+0

引用自http://stackoverflow.com/questions/1191167/format-output-of-simplexml-asxml:您可以使用'dom_import_simplexml($ xml) - > ownerDocument'。然后设置'$ dom-> formatOutput = true',你可以通过'$ dom-> saveXML()' – Brice