我是编码新手,尝试从XML文件创建数据库,该文件是行业,公司名称和符号的列表。我已经看到了几个将数据导入MySQL的PHP代码示例,如下所示:
<?php
$url ="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.industry%20where%20id%20in%20(select%20industry.id%20from%20yahoo.finance.sectors)&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url); //getting url contents
$data = curl_exec ($ch); //execule curl request
curl_close($ch);
$xml = simplexml_load_string($data);
$con=mysql_connect("localhost", "root", ""); //connect to server
mysql_select_db("symbol_list", $con) or die(mysql_error()); //select database
foreach ($xml -> item as $row) {
$industry = $row -> industry;
$company = $row -> name;
$symbol = $row -> symbol;
// perform sql query
$sql = "INSERT INTO 'symbols_xml' ('industry', 'company', 'symbol')"
. "VALUES ('$industry', '$company', '$symbol')";
$result = mysql_query($sql);
if (!$result) {
echo 'MySQL ERROR';
} else {
echo 'SUCCESS';
}
}
?>
但是,因为XML的格式如下:
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="215" yahoo:created="2015-03-02T20:58:57Z" yahoo:lang="en-US">
<results>
<industry id="112" name="Agricultural Chemicals">
<company name="Adarsh Plant Protect Ltd" symbol="ADARSHPL.BO"/>
<company name="African Potash Ltd" symbol="AFPO.L"/>
......
</industry>
<industry id="132" name="Aluminum">
<company name="AEI Corp Ltd" symbol="A18.SI"/>
<company name="Alcoa Inc" symbol="AA.BA"/>
<company name="Alcoa Inc" symbol="AA.MX"/>
......
我上面的PHP代码无法识别值... 有没有办法导入属性(行业名称,公司名称和符号),使其看起来像:
#| Industry | Company | Symbol
-|----------- ------------ -------
1| Aluminium | Alcoa Inc. | AA.BA
依旧......
我刚刚开始学习PHP和数据库,所以请原谅我,如果这是一个浪费你的时间的noobish问题。的xD
感谢。
答案 0 :(得分:2)
你实际上并不是很远。
为了获取属性,您可以通过两种方式完成:
$node['attributeName']
$node->attributes()->attributeName;
以下是您的代码更新:
<?php
$url ="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.industry%20where%20id%20in%20(select%20industry.id%20from%20yahoo.finance.sectors)&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url); //getting url contents
$data = curl_exec ($ch); //execule curl request
curl_close($ch);
$xml = simplexml_load_string($data);
$con=mysql_connect("localhost", "root", ""); //connect to server
mysql_select_db("symbol_list", $con) or die(mysql_error()); //select database
foreach ($xml->results->industry as $industryNode)
{
foreach ($industryNode->company as $companyNode)
{
$industry = (string) $industryNode['name'];
$company = (string) $companyNode['name'];
$symbol = (string) $companyNode['symbol'];
// perform sql query
$sql = "INSERT INTO 'symbols_xml' ('industry', 'company', 'symbol')"
. "VALUES ('$industry', '$company', '$symbol')";
$result = mysql_query($sql);
if (!$result)
{
echo 'MySQL ERROR';
}
else
{
echo 'SUCCESS';
}
}
}