<?php
function array_to_xml(array $arr, SimpleXMLElement $xml)
{
foreach ($arr as $k => $v) {
is_array($v)
? ucwords(array_to_xml($v, $xml->addChild($k)))
: ucwords($xml->addChild($k, $v));
}
return $xml;
}
$test_array = array (
'blaPo' => '1',
'Items' => '1',
'another_array' => array (
'stack' => 'overflow',
),
);
echo array_to_xml($test_array, new SimpleXMLElement('<root/>'))->asXML();
我想将标签名称更改为Pascal大小写,但我也使用了ucwords,它在服务器中也不起作用
答案 0 :(得分:0)
使用ucwords()
时,您都在SimpleXMLElement上执行此操作,但是您不存储返回的值...
is_array($v)
? ucwords(array_to_xml($v, $xml->addChild($k)))
: ucwords($xml->addChild($k, $v));
相反,您应该仅在使用addChild()
时使用它,并将其应用于要创建的元素的名称
is_array($v)
? array_to_xml($v, $xml->addChild(ucwords($k)))
: $xml->addChild(ucwords($k), $v);
哪些与您的测试数据有关...
<?xml version="1.0"?>
<root><BlaPo>1</BlaPo><Items>1</Items><Another_array><Stack>overflow</Stack></Another_array></root>