簡體   English   中英

用PHP生成XML文件

[英]Generate XML file in PHP

我正在嘗試從PHP數組生成XML文件。 一切看起來都很好,但是我無法刪除父節點。

這是我的數組的樣子:

這是我的數組的樣子:

這是生成的XML文件

在此處輸入圖片說明

如您所見,我在名為“ item”的父節點中有一些“ items”。

我只想知道,如何刪除名為“ item”的父節點並保留如下結構:

在此處輸入圖片說明

我的PHP代碼:

    function array_to_xml( $data, $xml_data ) {
        foreach( $data as $key => $value ) {
            if( is_numeric($key) ){
                $key = 'item';
            }
            if( is_array($value) ) {
                $subnode = $xml_data->addChild($key);
                array_to_xml($value, $subnode);
            } else {
                $xml_data->addChild("$key",htmlspecialchars("$value"));
            }
         }
    }

    $xml_data = new SimpleXMLElement('<?xml version="1.0"?><data></data>');

    array_to_xml($newArrayXml,$xml_data);

    //saving generated xml file; 
    $result = $xml_data->asXML('list.xml')

當我使用以下數組運行上述代碼時,它將輸出您要查找的內容:

$newArrayXml = array(
 2410687 => array('id' => 2410687),
 2440673 => array('id' => 2440673),
 2415709 => array('id' => 2415709),
 2445675 => array('id' => 2445675)
);

// var_dump($newArrayXml);exit;

function array_to_xml( $data, $xml_data ) {
 foreach( $data as $key => $value ) {
  if( is_numeric($key) ){
   $key = 'item';
  }
  if( is_array($value) ) {
   $subnode = $xml_data->addChild($key);
   array_to_xml($value, $subnode);
  } else {
   $xml_data->addChild("$key",htmlspecialchars("$value"));
  }
 }
}

$xml_data = new SimpleXMLElement('<?xml version="1.0"?><data></data>');

array_to_xml($newArrayXml,$xml_data);

//saving generated xml file;
$result = $xml_data->asXML('list.xml');

結果:

<?xml version="1.0"?>
<data>
<item><id>2410687</id></item>
<item><id>2440673</id></item>
<item><id>2415709</id></item>
<item><id>2445675</id></item>
</data>

也許問題出在您的陣列上。 它在您的照片中顯示array(1) ,這意味着您還有一個額外的數組:

$newArrayXml = array(array(
 2410687 => array('id' => 2410687),
 2440673 => array('id' => 2440673),
 2415709 => array('id' => 2415709),
 2445675 => array('id' => 2445675)
));

這將生成您不需要的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM