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