php - 将带有属性的 XML 导入 mysql

标签 php mysql xml

我有一个很大的(~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/

相关文章:

MYSQL 数据库不断崩溃(Ubuntu 14.04./MySQL 5.6)

java - 使用 Jersey 将 xml 转换为 json 格式的 Restful WebService

php - 如何在 PHP 中显示数据库的所有表行内容?

php - 使用 dirname 和 img src 在 apache 网络服务器上显示 Logo

MySQL 查询没有得到想要的结果

c# - .NET XML : What is the . NET 相当于 XmlDocument.TransformNode?

java - 如何做与偏好属性相反的android :dependency?

php - MySQL,结合 DISTINCT 和 JOIN

php - 使用 mysql 和 php 选择以相同 4 位数字结尾的行进行分组

php - 从 mySQL 查询中删除未找到的单词