2012-06-02 19 views
0

我需要形成一個shape_leng每條道路的表和每個道路座標(MULTILINESTRING)列可以有任意數量的分道線的,我需要將它們保存在一個排PHP:解析XML文件的多行字符串

XML文件格式的:幾路是多串,和其他幾個人都只有一個行:

我試圖解析它

(注:shape_leng是單個爲道路,但座標線可以是單個或多個道路。)

所以我不能像 shape_leng座標這樣的特定順序添加它們。

+0

所以......有什麼問題嗎? – McGarnagle

+0

我需要形成一個shape_leng每路表和座標(MULTILINESTRING)每條道路的列可以有任意數量的分道線的,我需要將它們保存在一排 – Rakesh12

+0

添加順序,當你查詢數據庫從中進行選擇,而不是在插入數據時進行選擇。這有幫助嗎? – hakre

回答

1

如果你想所有的座標插入到一個單一的數據庫行,我認爲你必須以不同的方式構建XPath和循環位。在道路上循環,然後使用XPath獲取屬於該道路的所有座標。例如:

// get all the roads and loop through them 
$roads = $xml->xpath("//e:featureMember/b:AA_ROAD"); 
$i=0; 

while(isset($roads[$i])) 
{ 
    // get the coordinates for the current road 
    $coordinates = $roads[i]->xpath("/b:the_geom/e:MultiLineString/e:lineStringMember/e:LineString/e:coordinates"); 
    $shapel = $roads[i]->xpath("/b:SHAPE_Leng"); 

    // add a second loop to concatinate all the $coordinates 
    $j=0; 
    while (isset($coordinates[$j])) { 
     // TODO concatinate coordinates 
    } 

    // insert the row 
    $b=mysql_query("INSERT IGNORE INTO `new`.`road1` (`coordstr`, `shapeleng`) values (GEOMFROMTEXT(concat('MULTILINESTRING ($a)')), '$shapel[$i]') "); 


    $i++; 
    echo "<br />"; 
    echo $i;  
} 
+0

蔭收到錯誤爲$ shapel = $道路[$ i]於 - >的xpath( 「/ B:SHAPE_Leng」);警告:的SimpleXMLElement ::的xpath()[simplexmlelement.xpath]:用C未定義命名空間前綴:\瓦帕\ WWW \ KGP \ newroadp.php上線14 $ shapel = $道路[$ i]於 - >的xpath( 「/ B:SHAPE_Leng」 ); – Rakesh12