将数组转换为XML,两个标记都为空值

时间:2018-05-23 08:04:40

标签: php arrays xml

我需要将数组转换为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>

0 个答案:

没有答案