[英]Generate seperate XML file for each mysql table row using PHP
我在 php 脚本中有这个函数来从 mysql 表生成 xml 文件。
function createXMLfile($stackarray){
$filePath = '/root/stack.xml';
$dom = new DOMDocument('1.0', 'utf-8');
$root = $dom->createElement('REQUEST');
for($i=0; $i<count($stackarray); $i++){
$stackName = $stackarray[$i]['stack_name'];
$stackSERIAL = $stackarray[$i]['stack_serialnumber'];
$content = $dom->createElement('CONTENT');
$device = $dom->createElement('DEVICE');
$info = $dom->createElement('INFO');
$name = $dom->createElement('NAME', $stackName);
$info->appendChild($name);
$serial = $dom->createElement('SERIAL', $stackSERIAL);
$info->appendChild($serial);
$type = $dom->createElement('TYPE', "NETWORKING");
$info->appendChild($type);
$device->appendChild($info);
$root->appendChild($content);
$module = $dom->createElement('MODULEVERSION', "3.1");
$content->appendChild($module);
$process = $dom->createElement('PROCESSNUMBER', "1");
$content->appendChild($process);
$content->appendChild($device);
$deviceid = $dom->createElement('DEVICEID', "foo");
$root->appendChild($deviceid);
$query = $dom->createElement('QUERY', "SNMPQUERY");
$root->appendChild($query);
}
$dom->appendChild($root);
$dom->save($filePath);
}
它目前所做的是根据上面的字段映射为 mysql 表中的整个数据生成 xml 文件。 例如;
<?xml version="1.0" encoding="utf-8"?>
<REQUEST>
<CONTENT>
<MODULEVERSION>3.1</MODULEVERSION>
<PROCESSNUMBER>1</PROCESSNUMBER>
<DEVICE>
<INFO>
<NAME>Nexus5020 Chassis</NAME>
<SERIAL>SS613390FZT</SERIAL>
<TYPE>NETWORKING</TYPE>
</INFO>
</DEVICE>
</CONTENT>
<DEVICEID>foo</DEVICEID>
<QUERY>SNMPQUERY</QUERY>
</REQUEST>
Mysql 表结构看起来像这样
+----+------------------------+--------------------+
| id | stack_name | stack_serialnumber |
+----+------------------------+--------------------+
| 1 | Nexus5020 Chassis | SS613390FZT |
| 2 | 40x10GE/Supervisor | JA91344BHNK |
| 3 | 6x10GE Ethernet Module | JA71228018M |
| 4 | 8x1/2/4G FC Module | JAB1531020C |
| 5 | Nexus5020 Chassis | SSI13390FZT |
我想使用 php 代码中的现有元素映射,根据上面的 mysql 数据为每一行生成特定的XML 文件。 例如,上表包含 5 行,因此应该生成5 个XML 文件。
我该如何实现? 有人指出在[array_column ( array $array , mixed $column_key [, mixed $index_key = null ] )]
使用数组列特征[array_column ( array $array , mixed $column_key [, mixed $index_key = null ] )]
。 有没有另一种方法可以做到这一点?
它应该只是将文档的创建放在循环中。 通过将循环编号$i
添加到文件路径,您可以防止在每次迭代时覆盖文件。
function createXMLfile($stackarray){
for($i=0; $i<count($stackarray); $i++){
$filePath = "/root/stack" . $i . ".xml";
$dom = new DOMDocument('1.0', 'utf-8');
$root = $dom->createElement('REQUEST');
$stackName = $stackarray[$i]['stack_name'];
$stackSERIAL = $stackarray[$i]['stack_serialnumber'];
$content = $dom->createElement('CONTENT');
$device = $dom->createElement('DEVICE');
$info = $dom->createElement('INFO');
$name = $dom->createElement('NAME', $stackName);
$info->appendChild($name);
$serial = $dom->createElement('SERIAL', $stackSERIAL);
$info->appendChild($serial);
$type = $dom->createElement('TYPE', "NETWORKING");
$info->appendChild($type);
$device->appendChild($info);
$root->appendChild($content);
$module = $dom->createElement('MODULEVERSION', "3.1");
$content->appendChild($module);
$process = $dom->createElement('PROCESSNUMBER', "1");
$content->appendChild($process);
$content->appendChild($device);
$deviceid = $dom->createElement('DEVICEID', "foo");
$root->appendChild($deviceid);
$query = $dom->createElement('QUERY', "SNMPQUERY");
$root->appendChild($query);
$dom->appendChild($root);
$dom->save($filePath);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.