如何在php中将xml标签更改为pascal大小写

时间:2018-11-30 07:19:54

标签: php xml

<?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,它在服务器中也不起作用

1 个答案:

答案 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>