📜  如何在PHP中将数组转换为 SimpleXML(1)

📅  最后修改于: 2023-12-03 15:24:33.501000             🧑  作者: Mango

如何在PHP中将数组转换为 SimpleXML

如果你需要将一个PHP中的数组转换为 SimpleXML,你可以使用SimpleXMLElement类的构造函数。SimpleXMLElement可以将一个XML字符串作为参数进行解析转换,所以我们需要将数组转换为XML字符串,然后再进行解析。

以下是将数组转换为XML字符串的示例:

function arrayToXml($array, $rootElement = null, $xml = null) {
    $_xml = $xml;
    
    if ($_xml === null) {
        $_xml = new SimpleXMLElement($rootElement !== null ? '<' . $rootElement . '/>' : '<root/>');
    }
    
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayToXml($value, $key, $_xml->addChild($key));
        } else {
            $_xml->addChild($key, $value);
        }
    }
    
    return $_xml->asXML();
}

这个函数将会返回一个XML字符串,其中包含了数组中的所有元素:

$array = array(
    'fruits' => array(
        'apple' => 'red',
        'banana' => 'yellow',
        'orange' => 'orange'
    )
);

$xml = arrayToXml($array);

echo $xml;

将输出:

<root>
    <fruits>
        <apple>red</apple>
        <banana>yellow</banana>
        <orange>orange</orange>
    </fruits>
</root>

现在,我们已经将数组成功转换为了一个XML字符串,接下来,我们可以使用SimpleXMLElement类的构造函数来解析转换后的XML字符串,将其转换为一个 SimpleXML 对象:

$xmlObject = new SimpleXMLElement($xml);

print_r($xmlObject);

输出:

SimpleXMLElement Object
(
    [fruits] => SimpleXMLElement Object
        (
            [apple] => red
            [banana] => yellow
            [orange] => orange
        )

)

现在我们已经成功将数组转换为 SimpleXML 对象了。