为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
明月笑刀无情 2023-09-08 10:38:20
我正在尝试将 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
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

我已经找到了。


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;

            }


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信