PHP - 在将JSON转换为XML时限制元素

时间:2017-06-19 17:03:31

标签: php json xml limit

我正在使用此代码将JSON转换为XML,并且它产生了包含300多个元素的巨大XML文件。有没有办法,如果我可以限制大小,只是在XML中生成50条记录?

PHP:

function array_to_xml( $data, &$xml_data ) {
    foreach( $data as $key => $value ) {
        if( is_numeric($key) ){
            $key = 'items'.$key; //dealing with <0/>..<n/> issues
        }
        if( is_array($value) ) {
            $subnode = $xml_data->addChild($key);
            array_to_xml($value, $subnode);
        } else {
            $xml_data->addChild("$key",htmlspecialchars("$value"));
        }
     }
}

$xml_data = new SimpleXMLElement('<?xml version="1.0"?><data></data>');
$json_file = file_get_contents("directory/abc.json");
$json_data = json_decode($json_file, true);
echo count($json_data['data']);
array_to_xml($json_data2,$xml_data);
$result = $xml_data->asXML('directory/abc.xml');

XML:

<data>
    <total>212</total>
    <start>0</start>
    <count>212</count>
    <data>
        <item0>
            <id>123</id>
            <title>abc-test1</title>
            <clientContact>
                <id>111</id>
                <firstName>abc</firstName>
                ....
            </clientContact>
            ....
        </item0>
        <item1>
        ...
        </item1>
        ...
        ...
        <item300>
        ...
        </item300>
    </data>
</data>

1 个答案:

答案 0 :(得分:1)

请试试这个。我在if条件下添加了计数器,其中将值检查为数组

function array_to_xml( $data, &$xml_data ) {
    $counter = 1;
    foreach( $data as $key => $value ) {
        if( is_numeric($key) ){
            $key = 'items'.$key; //dealing with <0/>..<n/> issues
        }
        if( is_array($value) ) {
            if($counter <= 50) {
                $subnode = $xml_data->addChild($key);
                array_to_xml($value, $subnode);
                $counter++;
            }
        } else {
            $xml_data->addChild("$key",htmlspecialchars("$value"));
        }
    }
}