我有一个脚本可以从我无法编辑的源导入 XML 文件(XML 文件由第三方公司提供给我,数据每小时更改一次 - 他们说他们无法更改 XML 文件)。
这是源代码的示例:
<guns>
<gun id="0021">
<type>Air Pistol</type>
<mechanism>Single Stroke Pneumatic</mechanism>
<model>HW75</model>
<origin>German</origin>
<imageCount>2</imageCount>
<images>
<image>
<number>1</number> <fullPath>http://images.mydomain.com/Images/13/1306/13062/001/0021-1.jpg</fullPath>
</image>
<image>
<number>2</number> <fullPath>http://images.mydomain.com/Images/13/1306/13062/001/0021-2.jpg</fullPath>
</image>
</images>
</gun>
<gun id="0022">
<type>Air Pistol</type>
<mechanism>Single Stroke Pneumatic</mechanism>
<model>HW75</model>
<origin>German</origin>
</gun>
</guns>
我可以将字段导入 PHP,然后成功导入 Mysql。
但是,当它意识到“完整路径”字段不存在时,它会停止读取 XML。
我有 100 条记录要导入,它在第 21 条记录后停止,因为第 22 号记录没有任何图像。
这是我的php代码:
$xmlDoc = new DOMDocument();
$xmlDoc->load("xmlGuns.xml");
$mysql_hostname = "localhost";
$mysql_user = "************";
$mysql_password = "********";
$mysql_database = "*********";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password)
or die("Oops some thing went wrong");
mysql_select_db($mysql_database, $bd)
or die("Oops some thing went wrong");
mysql_query("TRUNCATE TABLE GunTable")
or die("Oops some thing went wrong");
mysql_query("ALTER TABLE GunTable AUTO_INCREMENT = 1")
or die("Oops some thing went wrong");
$x=$xmlDoc->getElementsByTagName('gun');
for ($i=0; $i<=15000; $i++)
{
$type=$x->item($i)->getElementsByTagName('type')
->item(0)->childNodes->item(0)->nodeValue;
$mechanism=$x->item($i)->getElementsByTagName('mechanism')
->item(0)->childNodes->item(0)->nodeValue;
$model=$x->item($i)->getElementsByTagName('model')
->item(0)->childNodes->item(0)->nodeValue;
$origin=$x->item($i)->getElementsByTagName('origin')
->item(0)->childNodes->item(0)->nodeValue;
$fullPath=$x->item($i)->getElementsByTagName('fullPath')
->item(0)->childNodes->item(0)->nodeValue;
$insert = "INSERT INTO GunTable (type, mechanism, model, origin, fullpath) VALUES ('$type', '$mechanism','$model','$origin','$fullpath')";
$add_member = mysql_query($insert);
}
当它到达没有图像的记录时,它在处理记录号 21 后给我以下错误...
**注意:尝试在第 31 行的 /mydomain.com/import.php 中获取非对象的属性
致命错误:在第 31 行的 /mydomain.com/import.php 中的非对象上调用成员函数 item()**
第 31 行开始: $fullPath=$x->item($i)->getElementsByTagName('fullPath')
谁能帮忙!我对 PHP 没问题,但是这个 DOMDocument 东西对我来说是新的。
解决方案:
呼……我设法解决了。
if(isset($x->item($i)->getElementsByTagName('fullPath')->item(0)->childNodes)) {
$fullPath=$x->item($i)->getElementsByTagName('fullPath')
->item(0)->childNodes->item(0)->nodeValue;
} else { $fullPath = "No Image"; }
现在我遇到了图像的 URL 没有插入 MySQL 数据库的问题...... EEK!