我需要将数组转换为XML字符串,但如果我的数组包含某个键的空值,我想创建open和close标记,例如 'testone' 和 'testtwo' 。
例如在我的代码中:
$test_array = array (
'testone' => array(),
'bla' => 'blub',
'testtwo' => '',
'foo' => 'bar',
'another_array' => array (
'stack' => 'overflow',
),
);
function array_to_xml( $data, &$xml_data ) {
foreach( $data as $key => $value ) {
if( is_numeric($key) ){
$key = 'item'.$key; //dealing with <0/>..<n/> issues
}
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($test_array,$xml_data);
$result = $xml_data->asXML();
echo $result;
我得到了这个结果:
<?xml version="1.0"?>
<data>
<testone/>
<bla>blub</bla>
<testtwo/>
<foo>bar</foo>
<another_array>
<stack>overflow</stack>
</another_array>
</data>
但我需要这个:
<?xml version="1.0"?>
<data>
<testone></testone>
<bla>blub</bla>
<testtwo></testtwo>
<foo>bar</foo>
<another_array>
<stack>overflow</stack>
</another_array>
</data>