ARRAY 到 XML,PHP 中没有任何库

ARRAY to XML without any libs in PHP

我正在尝试将 XML 转换为 ARRAY,并将 ARRAY 转换为 XML。网上有很多脚本,但几乎每个脚本都使用 SimpleXML 或其他库。

我几乎可以用这个来做所有事情:https://github.com/nullivex/lib-array2xml

现在,这就是我所拥有的:

XML

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <nom>Leaflet</nom>
  <fichiers>
     <fichier type="js" script="externe">leaflet.js</fichier>
     <fichier type="js" script="interne" cdata="true"><![CDATA[TEST]]></fichier>
  </fichiers>
  <activation>0</activation>
</configuration>

这大大变成了 ARRAY :

Array
(
    [configuration] => Array
        (
            [nom] => Array
                (
                    [#text] => Leaflet
                )

            [fichiers] => Array
                (
                    [fichier] => Array
                        (
                            [0] => Array
                                (
                                    [#text] => leaflet.js
                                    [@type] => js
                                    [@script] => externe
                                )

                            [1] => Array
                                (
                                    [#text] => TEST
                                    [@type] => js
                                    [@script] => interne
                                    [@cdata] => true
                                )

                        )

                )

            [activation] => Array
                (
                    [#text] => 0
                )

        )

)

但是当我尝试转换回 XML 时,我有这个...

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <nom>Leaflet</nom>
  <fichiers>
    <fichier>leaflet.js</fichier>
    <fichier>TEST</fichier>
  </fichiers>
  <activation>0</activation>
</configuration>

有什么想法吗?几天没用了...

编辑:我也测试过这个:https://github.com/spatie/array-to-xml

我找到了。

if(isset($arr['#text'])) 
            {
                foreach($arr as $key => $value) 
                {
                    if(@$key[0]=="@") $node->setAttribute(substr($key, 1), $value);
                }
                
                if(isset($arr['@cdata'])) 
                {
                    $node->setAttribute('cdata', $arr['@cdata']);
                    $node->appendChild($xml->createCDATASection(self::bool2str($arr['#text'])));
                }
                else
                {
                    $node->appendChild($xml->createTextNode(self::bool2str($arr['#text'])));
                }
                unset($arr['#text']);
                return $node;
            }