私はこのような配列を持っています
Array
(
[351] => Array
(
[0] => Array
(
[unit_id] => Array
(
[0] => 10192
[1] => 10192
[2] => 10192
)
[born_from] => Array
(
[0] => 1980-08-21
)
[born_to] => Array
(
[0] => 2010-08-18
)
[start_date] => Array
(
[0] => 2013-02-21 17:29:00
)
[sex] => Array
(
[0] => 3
)
[id] => 351
[product_id] => 1
[name] => test1
)
)
)
この配列をxmlに変換するPHP関数を作成しました
機能は
function generate_xml_from_array($array, $node_name) {
$xml = '';
if (is_array($array) || is_object($array)) {
foreach ($array as $key=>$value) {
if (is_numeric($key)) {
$key = $node_name;
}
$xml .= '<' . $key . '>' . "\n" . generate_xml_from_array($value, $node_name) . '</' . $key . '>' . "\n";
}
} else {
$xml = htmlspecialchars($array, ENT_QUOTES) . "\n";
}
return $xml;
}
function generate_valid_xml_from_array($array, $node_block='products', $node_name='node') {
$xml = '<?xml version="1.0" encoding="UTF-8" ?>' . "\n";
$xml .= '<' . $node_block . '>' . "\n";
$xml .= generate_xml_from_array($array, $node_name);
$xml .= '</' . $node_block . '>' . "\n";
return $xml;
}
$xml = generate_valid_xml_from_array($MyArray);
file_put_contents('C:/product.xml',$xml);
これにより、このような出力が得られます
<?xml version="1.0" encoding="UTF-8" ?>
<products>
<node>
<node>
<unit_id><node>10192</node><node>10192</node><node>10192</node></unit_id>
<born_from><node>1980-08-21</node></born_from>
<born_to><node>2010-08-18</node></born_to>
<start_date><node>2013-02-21 17:29:00</node></start_date>
<sex><node>3</node></sex>
<id>351</id>
<product_id>1</product_id>
<name>test1</name>
</node>
</node>
</products>
この出力には、<node>
これを削除する方法でファイル サイズが増加している<node>
ため、ファイル サイズは増加しません。