我想從常用數組中生成xml數據。如果節點名稱相同,PHP XML Writer不生成xml
我的陣列
$data = array(
'item' => array(
'id' => '1',
'name' => 'bar1',
'price' => '10',
'description' => '',
'image_link_small' => '',
'image_link_big' => ''
),
'item' => array(
'id' => '2',
'name' => 'bar2',
'price' => '20',
'description' => '',
'image_link_small' => '',
'image_link_big' => ''
),
'item' => array(
'id' => '3',
'name' => 'bar3',
'price' => '30',
'description' => '',
'image_link_small' => '',
'image_link_big' => ''
),
'item' => array(
'id' => '4',
'name' => 'bar4',
'price' => '40',
'description' => '',
'image_link_small' => 'link1',
'image_link_big' => 'link2'
)
);
我的PHP陣列,以XML轉換代碼是
public function convertArrayToXML($data, $rootElement = 'root', $startDoc = '1.0', $xml_encoding = 'UTF-8') {
$xml = new XmlWriter();
$xml->openMemory();
$xml->startDocument($startDoc, $xml_encoding);
$xml->startElement($rootElement);
function write(XMLWriter $xml, $data) {
foreach ($data as $key => $value) {
if (is_array($value)) {
$xml->startElement($key);
write($xml, $value);
$xml->endElement();
continue;
}
$xml->writeElement($key, $value);
}
}
write($xml, $data);
$xml->endElement();
return $xml->outputMemory(true);
}
但它給我輸出XML只有最後一個節點...
<root>
<item>
<id>4</id>
<name>bar4</name>
<price>40</price>
<description/>
<image_link_small>link1</image_link_small>
<image_link_big>link2</image_link_big>
</item>
</root>
如果我將項目排列爲item1,item2,它em3,item4它給我 正確的xml數據。可能是什麼問題?
謝謝你
到XML轉換是做什麼它應該用數據做你正在給它。在定義數組後立即嘗試轉儲數組。您會發現每個元素覆蓋之前的元素,因爲每個元素具有相同的名稱,只留下最後一個元素。 – Jason