猿问

PHP 中无需任何库即可将数组转换为 XML

我正在尝试将 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


明月笑刀无情
浏览 90回答 1
1回答

慕姐8265434

我已经找到了。if(isset($arr['#text']))&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach($arr as $key => $value)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(@$key[0]=="@") $node->setAttribute(substr($key, 1), $value);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(isset($arr['@cdata']))&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $node->setAttribute('cdata', $arr['@cdata']);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $node->appendChild($xml->createCDATASection(self::bool2str($arr['#text'])));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $node->appendChild($xml->createTextNode(self::bool2str($arr['#text'])));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unset($arr['#text']);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return $node;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
随时随地看视频慕课网APP
我要回答