當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


PHP array轉SimpleXML用法及代碼示例


很多時候需要將數據以 XML 格式存入數據庫或存入文件以備後用。為了滿足這個要求,需要將數據轉換為 XML 並保存 XML 文件。

SimpleXML 擴展函數提供了將 XML 轉換為對象的工具集。這些對象處理普通的屬性選擇器和數組迭代器。

範例1:


<?php
// Code to convert php array to xml document
  
// Define a function that converts array to xml.
function arrayToXml($array, $rootElement = null, $xml = null) {
    $_xml = $xml;
      
    // If there is no Root Element then insert root
    if ($_xml === null) {
        $_xml = new SimpleXMLElement($rootElement !== null ? $rootElement :'<root/>');
    }
      
    // Visit all key value pair
    foreach ($array as $k => $v) {
          
        // If there is nested array then
        if (is_array($v)) { 
              
            // Call function for nested array
            arrayToXml($v, $k, $_xml->addChild($k));
            }
              
        else {
              
            // Simply add child element. 
            $_xml->addChild($k, $v);
        }
    }
      
    return $_xml->asXML();
}
  
// Creating an array for demo
$my_array = array (
'name' => 'GFG',
'subject' => 'CS',
  
    // Creating nested array.
    'contact_info' => array (
    'city' => 'Noida',
    'state' => 'UP',
    'email' => 'feedback@geeksforgeeks.org'
    ),
);
  
// Calling arrayToxml Function and printing the result
echo arrayToXml($my_array);
?>

輸出:

<?xml version="1.0"?>
<root>
    <name> GFG </name>
    <subject> CS </subject>
    <contact_info >
        <city > Noida < /city >
        <state > UP < /state >
        <email > feedback@geeksforgeeks.org </email>
    <contact_info>
<root>

上述問題可以使用 array_walk_recursive() 函數解決。此函數將數組轉換為 xml 文檔,其中數組的鍵轉換為值,數組的值轉換為 xml 的元素。



範例2:


<?php
// Code to convert php array to xml document
  
// Creating an array
$my_array = array (
    'a' => 'x',
    'b' => 'y',
      
    // creating nested array
    'another_array' => array (
        'c' => 'z',
    ),
);
  
// This function create a xml object with element root.
$xml = new SimpleXMLElement('<root/>');
  
// This function resursively added element
// of array to xml document
array_walk_recursive($my_array, array ($xml, 'addChild'));
  
// This function prints xml document.
print $xml->asXML();
?>

輸出:

<?xml version="1.0"? >
<root >
       <x> a </x >
       <y> b </y >
       <z> c </z >
</root >

注意:如果係統生成錯誤類型:PHP 致命錯誤:未捕獲錯誤:在 /home/6bc5567266b35ae3e76d84307e5bdc78.php:24 中找不到類“SimpleXMLElement”,則隻需安裝 php-xml、php-simplexml 包。




相關用法


注:本文由純淨天空篩選整理自ankit15697大神的英文原創作品 How to convert array to SimpleXML in PHP。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。