我正在使用此代码将JSON转换为XML,并且它产生了包含300多个元素的巨大XML文件。有没有办法,如果我可以限制大小,只是在XML中生成50条记录?
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');
<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>
答案 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"));
}
}
}