如何使用PHP将解析后的XML传递到mySQL数据库?

时间:2013-01-14 21:19:01

标签: php mysql xml parsing

我有一个本地服务器,我正在接收xml文件。收到的xml文件很好,但我对如何将XML文件传递到数据库有疑问。

我简单地检索xml文件:

$xml_post = file_get_contents('php://input');

我收到的xml文件如下所示:

<city>
<id>1081</id>
<name>athens</name>
<country>Greece</country>
<info>etc etc etc</info>
</city>

我已经用phpmyadmin手动创建了一个具有完全相同节点的数据库,因此我可以正确保存所有内容。

现在我想用mysql_query插入我在数据库中获得的内容。 像这样:

mysql_query("INSERT INTO cities (id, city ,country , info)
  VALUES (4 , 'athens' , 'greece' , 'etc etc etc'");

但是哪些变量我存储了我的xml以将它们用作上述语句中的值?我如何解析我必须将所有节点存储在变量中的xml文件,然后将它们正确地传递给数据库?

2 个答案:

答案 0 :(得分:2)

尝试使用simplexml_load_string()

使用示例:

<?php
$xml = '<city>
<id>1081</id>
<name>athens</name>
<country>Greece</country>
<info>etc etc etc</info>
</city>
';

$xml = simplexml_load_string($xml);
//1081
echo $xml->id;
//athens
echo $xml->name;
?>

如果XML中有多个节点,则每个节点都是一个对象数组:

$xml = '
<citys>
    <city>
        <id>1081</id>
        <name>athens</name>
        <country>Greece</country>
        <info>etc etc etc</info>
    </city>
    <city>
        <id>1082</id>
        <name>somwhere else</name>
        <country>Spain</country>
        <info>etc etc etc</info>
    </city>

</citys>
';

$xml = simplexml_load_string($xml);
//print_r($xml);

foreach($xml->city as $val){
    echo $val->name;
}

//or
echo $xml->city[0]->name;
//athens
echo $xml->city[1]->name;

答案 1 :(得分:1)

您需要将XML解析为PHP可读的数据,然后在SQL插入中使用该数据。

PHP SimpleXML Tutorial可能是一个开始的地方。