gpt4 book ai didi

php - 使用 PHP 为每个 mysql 表行生成单独的 XML 文件

转载 作者:行者123 更新时间:2023-11-29 02:40:17 25 4
gpt4 key购买 nike

我在 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 |

我想根据上面的 mysql 数据使用 php 代码中的现有元素映射为每一行生成特定 XML 文件。例如,上表包含 5 行,因此它应该生成 5 个 XML 文件。

我该如何实现?有人指出在脚本中使用数组列功能 [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);
}
}

关于php - 使用 PHP 为每个 mysql 表行生成单独的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54141341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com