Simplexml_load_string()不加载索引

时间:2014-04-17 07:10:42

标签: php xml simplexml

我正在阅读包含以下内容的XML文件:

<column name="title">
<![CDATA[
Sets inktcartridges geschikt voor Brother, Canon, Epson of HP printers (vanaf € 19,95)
]]>
</column>
<column name="description">
<![CDATA[
Niets zo storend als een printer zonder inkt als je net je 300 pagina’s tellende scriptie moet inleveren. Voorkom dit soort narigheden met cartridges voor verschillende printers in zwart en in kleur.
]]>
</column>

当我使用simplexml_load_string解析数据时,每个项都会得到一个空索引:

$xml = simplexml_load_string($data,'SimpleXMLElement',LIBXML_NOCDATA);  

输出:

[1] => Sets inktcartridges geschikt voor Brother, Canon, Epson of HP printers (vanaf € 19,95)
        [2] => Niets zo storend als een printer zonder inkt als je net je 300 pagina’s tellende scriptie moet inleveren. Voorkom dit soort narigheden met cartridges voor verschillende printers in zwart en in kleur.

如何告诉simplexml_load_string列中的名称项必须是索引?

1 个答案:

答案 0 :(得分:0)

我认为你不能一次性做到这一点..你可以这样做..

<?php
$string = <<<XML
<?xml version='1.0'?>
<cols>
<column name="title">
<![CDATA[
Sets inktcartridges geschikt voor Brother, Canon, Epson of HP printers (vanaf € 19,95)
]]>
</column>
<column name="description">
<![CDATA[
Niets zo storend als een printer zonder inkt als je net je 300 pagina’s tellende scriptie moet inleveren. Voorkom dit soort narigheden met cartridges voor verschillende printers in zwart en in kleur.
]]>
</column>
</cols>
XML;
echo "<pre>";
$xml = simplexml_load_string($string,'SimpleXMLElement',LIBXML_NOCDATA);
$new_arr = array();
for($i=0;$i<count($xml->column);$i++)
{
    $new_arr[(string)$xml->column[$i]->attributes()[0]]=trim(strip_tags($xml->column[$i]->saveXML()));
}
print_r($new_arr);

<强> OUTPUT :

Array
(
    [title] => Sets inktcartridges geschikt voor Brother, Canon, Epson of HP printers (vanaf € 19,95)
    [description] => Niets zo storend als een printer zonder inkt als je net je 300 pagina’s tellende scriptie moet inleveren. Voorkom dit soort narigheden met cartridges voor verschillende printers in zwart en in kleur.
)

Working Demo