我有一个很大的(~30Mb)XML 文件,如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<LIC Version="2.0" Title="Products">
<Item>
<Field Name="Filename">/root/_DOWNLOAD/Bird.txt</Field>
<Field Name="Read_By">Lisa Hannigan</Field>
<Field Name="Posit">Passenger</Field>
</Item>
<Item>
<Field Name="Filename">D:\03\Strypers.pdf</Field>
<Field Name="Read_By">Stryper</Field>
<Field Name="Intensity">2</Field>
<Field Name="IMG">78</Field>
<Field Name="Rotate">0</Field>
</Item>
<Item>
<Field Name="Filename">D:\Afriu.txt</Field>
<Field Name="Read_By">Africano</Field>
<Field Name="Posit">Canto Africano vol.1</Field>
<Field Name="File_Resource">mp3</Field>
</Item>
<Item>
<Field Name="Filename">D:\_VARIOUS\Knots.pdf</Field>
<Field Name="Date">40624</Field>
</Item>
...
</LIC>
我想使用 php 脚本将此 xml 导入 mysql 数据库。我使用过 SIMPLEXML 和 xpath:
$url = 'FILE.xml';
$xml = simplexml_load_file($url);
$result = $xml->xpath("//Field[@Name]");
foreach { ... }
我需要什么?创建用于 mysql sql 的数组的正确“foreach”是什么? 请注意,每一行(由“项目”标识)都不相同(不具有相同的“字段名称”)。 对于较大的文件使用 simplexml 是否正确? 谢谢您的帮助!
更新
这是一个使用“foreach”的示例,我尝试过:
$result = $xml->xpath("//Field[@Name]");
foreach($result as $key => $value) {
echo $value['Name']."=".$value.",";
}
现在我想了解如何创建要插入 mysql 的字符串
最佳答案
首先创建一个表,将所有可能的字段作为列进行匹配。然后你可以通过 LOAD XML LOCAL INFILE
query 加载它。
LOAD XML LOCAL INFILE 'file.xml'
INTO TABLE person
ROWS IDENTIFIED BY '<Item>';
关于php - 将带有属性的 XML 导入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14234563/