XML ドキュメントから連想配列へのデータの変換を手伝ってくれる人はいますか? XML 構造を考えると、問題が発生しています。コードはループしますが、同じノード (xml ファイルの最初のノード) を繰り返します。このコードは、データベースに 4 行 (すべて同じ行) を挿入します。コードをxmlの他のノードに移動する方法。
////////////////////////////XMLファイル////////////////// //////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<root>
<property>
<id>2</id>
<type>2</type>
<rent_type>1</rent_type>
<cid>1</cid>
<locid>2</locid>
<stid>2</stid>
<cnid>2</cnid>
<locality>2</locality>
<state>costa blanca</state>
<country>spain</country>
<office_id>1</office_id>
<mls_id>2d2</mls_id>
<mls_agent>2</mls_agent>
<viewad>1</viewad>
<viewbooking>1</viewbooking>
<unit_num>mmmmm</unit_num>
<street_num>nnnn</street_num>
<address2>mmmbbbbbbbbbbbbbbb b bbm</address2>
<postcode></postcode>
<county>dd</county>
<price>222222222.00</price>
<showprice>1</showprice>
<freq>0</freq>
<bond>0.00</bond>
<closeprice>2222222222.00</closeprice>
<priceview>3</priceview>
<age>5</age>
<landtype>1</landtype>
<frontage></frontage>
<depth></depth>
</property>
<property>
<id>3</id>
<type>2</type>
<rent_type>0</rent_type>
<cid>1</cid>
<locid>0</locid>
<stid>0</stid>
<cnid>0</cnid>
<locality></locality>
<state></state>
<country></country>
<office_id></office_id>
<mls_id>3d3</mls_id>
<mls_agent></mls_agent>
<viewad>0</viewad>
<viewbooking>0</viewbooking>
<unit_num>mmmmm</unit_num>
<street_num>nnnn</street_num>
<address2>mmmm</address2>
<postcode></postcode>
<county>dd</county>
<price>3333333333.00</price>
<showprice>1</showprice>
<freq>0</freq>
<bond>0.00</bond>
<closeprice>333333.00</closeprice>
<priceview></priceview>
<age></age>
<landtype></landtype>
<frontage></frontage>
<depth></depth>
</property>
<property>
<id>4</id>
<type>0</type>
<rent_type>0</rent_type>
<cid>1</cid>
<locid>0</locid>
<stid>0</stid>
<cnid>0</cnid>
<locality></locality>
<state></state>
<country></country>
<office_id></office_id>
<mls_id>4d4</mls_id>
<mls_agent></mls_agent>
<viewad>0</viewad>
<viewbooking>0</viewbooking>
<unit_num>mmmmm</unit_num>
<street_num>nnnn</street_num>
<address2>mmmm</address2>
<postcode></postcode>
<county>dd</county>
<price>444444444444444.00</price>
<showprice>1</showprice>
<freq>0</freq>
<bond>0.00</bond>
<closeprice>4444444444444444444.00</closeprice>
<priceview></priceview>
<age></age>
<landtype></landtype>
<frontage></frontage>
<depth></depth>
</property>
<property>
<id>5</id>
<type>0</type>
<rent_type>0</rent_type>
<cid>1</cid>
<locid>0</locid>
<stid>0</stid>
<cnid>0</cnid>
<locality></locality>
<state></state>
<country></country>
<office_id></office_id>
<mls_id>5d5</mls_id>
<mls_agent></mls_agent>
<viewad>0</viewad>
<viewbooking>0</viewbooking>
<unit_num>mmmmm</unit_num>
<street_num>nnnn</street_num>
<address2>mmmm</address2>
<postcode></postcode>
<county>dd</county>
<price>55555555555555.00</price>
<showprice>1</showprice>
<freq>0</freq>
<bond>0.00</bond>
<closeprice>55555555555.00</closeprice>
<priceview></priceview>
<age></age>
<landtype></landtype>
<frontage></frontage>
<depth></depth>
</property>
</root>
/////////////////////////////PHPコード////////////////// //////////////////////////////////
ini_set('display_errors','On');
echo "starting<br />";
//mysql connection
...
echo "connected to DB<br /><br />";
$url = "s_property1.xml";
$xmlfgc = file_get_contents($url);
$xmlitem = new SimpleXMLElement($xmlfgc);
echo "xml loaded<br /><br />";
foreach ($xmlitem->property as $xml) {
//for ($i=0;$i ;){
$id = mysql_real_escape_string($xmlitem->property->id);
$type = mysql_real_escape_string($xmlitem->property->type);
$rent_type = mysql_real_escape_string($xmlitem->property->rent_type);
$cid = mysql_real_escape_string($xmlitem->property->cid);
$locid = mysql_real_escape_string($xmlitem->property->locid);
$stid = mysql_real_escape_string($xmlitem->property->stid);
$cnid = mysql_real_escape_string($xmlitem->property->cnid);
$locality = mysql_real_escape_string($xmlitem->property->locality);
$state = mysql_real_escape_string($xmlitem->property->state);
$country = mysql_real_escape_string($xmlitem->property->country);
$office_id = mysql_real_escape_string($xmlitem->property->office_id);
$mls_id = mysql_real_escape_string($xmlitem->property->mls_id);
$mls_agent = mysql_real_escape_string($xmlitem->property->mls_agent);
$viewad = mysql_real_escape_string($xmlitem->property->viewad);
$viewbooking = mysql_real_escape_string($xmlitem->property->viewbooking);
$unit_num = mysql_real_escape_string($xmlitem->property->unit_num);
$street_num = mysql_real_escape_string($xmlitem->property->street_num);
$address2 = mysql_real_escape_string($xmlitem->property->address2);
$postcode = mysql_real_escape_string($xmlitem->property->postcode);
$county = mysql_real_escape_string($xmlitem->property->county);
$price = mysql_real_escape_string($xmlitem->property->price);
$showprice = mysql_real_escape_string($xmlitem->property->showprice);
$freq = mysql_real_escape_string($xmlitem->property->freq);
$bond = mysql_real_escape_string($xmlitem->property->bond);
$closeprice = mysql_real_escape_string($xmlitem->property->closeprice);
$priceview = mysql_real_escape_string($xmlitem->property->priceview);
$age = mysql_real_escape_string($xmlitem->property->age);
$landtype = mysql_real_escape_string($xmlitem->property->landtype);
$frontage = mysql_real_escape_string($xmlitem->property->frontage);
$depth = mysql_real_escape_string($xmlitem->property->depth);
echo "xml parsed<br /><br />";
$xmldata = array();
$xmldata[] = '("' . $id. '", "' . $type . '", "' . $rent_type. '", "' . $cid . '", "' . $locid . '", "' . $stid . '", "' . $cnid . '",
"' . $locality . '", "' . $state . '", "' . $country . '", "' . $office_id . '", "' . $mls_id . '", "' . $mls_agent . '",
"' . $viewad . '", "' . $viewbooking . '", "' . $unit_num . '", "' . $street_num . '", "' . $address2 . '", "' . $postcode . '",
"' . $county . '", "' . $price . '", "' . $showprice . '", "' . $freq . '", "' . $bond . '", "' . $closeprice . '",
"' . $priceview . '" ,"' . $age . '", "' . $landtype . '", "' . $frontage . '", "' . $depth . '")';
//insert into databse
$query = 'INSERT INTO gitfd_ezrealty ( id, type, rent_type, cid, locid, stid, cnid, locality, state, country, office_id, mls_id, mls_agent,
viewad, viewbooking, unit_num, street_num, address2, postcode, county, price, showprice, freq, bond, closeprice, priceview,
age, landtype, frontage, depth)
VALUES' . implode(',', $xmldata);
mysql_query($query) or die(mysql_error());
echo "inserted into mysql<br /><br />";
print_r($xmldata);
}
?>
しかし、id は auto_increment です。
このコードの出力 = db への 4 行 + {DB への接続の開始
xml がロードされました
xml が解析されました
mysqlに挿入
配列 ( [0] => ("", "2", "1", "1", "2", "2", "2", "2", "コスタブランカ", "スペイン", "1 "、"2d2"、"2"、"1"、"1"、"mmmm"、"nnnn"、"mmmbbbbbbbbbbbbbbbb bbm"、""、"dd"、"222222222.00"、"1"、"0" 、「0.00」、「2222222222.00」、「3」、「5」、「1」、「」、「」) ) xml 解析済み
mysqlに挿入
配列 ( [0] => ("", "2", "1", "1", "2", "2", "2", "2", "コスタブランカ", "スペイン", "1 "、"2d2"、"2"、"1"、"1"、"mmmm"、"nnnn"、"mmmbbbbbbbbbbbbbbbb bbm"、""、"dd"、"222222222.00"、"1"、"0" 、「0.00」、「2222222222.00」、「3」、「5」、「1」、「」、「」) ) xml 解析済み
mysqlに挿入
配列 ( [0] => ("", "2", "1", "1", "2", "2", "2", "2", "コスタブランカ", "スペイン", "1 "、"2d2"、"2"、"1"、"1"、"mmmm"、"nnnn"、"mmmbbbbbbbbbbbbbbbb bbm"、""、"dd"、"222222222.00"、"1"、"0" 、「0.00」、「2222222222.00」、「3」、「5」、「1」、「」、「」) ) xml 解析済み
mysqlに挿入
配列 ( [0] => ("", "2", "1", "1", "2", "2", "2", "2", "コスタブランカ", "スペイン", "1 "、"2d2"、"2"、"1"、"1"、"mmmm"、"nnnn"、"mmmbbbbbbbbbbbbbbbb bbm"、""、"dd"、"222222222.00"、"1"、"0" 、「0.00」、「2222222222.00」、「3」、「5」、「1」、「」、「」))
挿入されたレコード: 1 }