2017-05-30 63 views
-1
<?php 
$xml = "<Placemark> 
<name>ED1YBY</name> 
<description><![CDATA[145.750 MHz -600 kHz FM (RV60 - R6)<br>IN62IG<br>URE Ourense]]></description> 
<styleUrl>#icon-503-DB4436</styleUrl> 
<Point> 
<coordinates> 
-7.281189,42.271212,0 
</coordinates> 
</Point> 
</Placemark> 
<Placemark> 
<name>ED1YBY</name> 
<description><![CDATA[145.750 MHz -600 kHz FM (RV60 - R6)<br>IN62IG<br>URE Ourense]]></description> 
<styleUrl>#icon-503-DB4436</styleUrl> 
<Point> 
<coordinates> 
-7.281189,42.271212,0 
</coordinates> 
</Point> 
</Placemark> 
"; 

$obj = new SimpleXMLExtractor($xml); 

$name_array = array(); 
$description_array = array(); 
$coordinates_array = array(); 

foreach ($obj->name as $value1) { 
$name_array[] = trim((string)$value1); 
} 

foreach ($obj->description as $value2) { 
$description_array[] = trim((string)$value2); 
} 

foreach ($obj->Point->coordinates as $value3) { 
$coordinates_array = trim((string)$value3); 
} 
?> 

<!DOCTYPE HTML> 
<html> 
<head> 
<title>EXTRACTING DATA</title> 
</head> 

<body> 
<center> 
<table> 
<tr> 
<th><h4 style = "width:300px; text-align:center">FREQUENCY</h4></th> 
<th><h4 style = "width:140px; text-align:center">CALLSIGN</h4></th> 
<th><h4 style = "width:140px; text-align:center">LOCATOR</h4></th> 
<th><h4 style = "width:140px; text-align:center">LAT</h4></th> 
<th><h4 style = "width:140px; text-align:center">LONG</h4></th> 
<th><h4 style = "width:140px; text-align:center">SySop</h4></th> 
</tr> 

<?php 
for ($i = 0; $i < count($name_array); $i++) { 
echo "<tr style = 'text-align:center'>"; 
$notes = explode("<br>", $description_array[$i]); 
echo "<td>".$notes[0]."</td>"; 
echo "<td>".$name_array[$i]."</td>"; 
echo "<td>".$notes[1]."</td>"; 
$latlon = explode("," , $coordinates_array); 
echo "<td>".$latlon[1]."</td>"; 
echo "<td>".$latlon[0]."</td>"; 
echo "<td>".$notes[2]."</td>"; 
echo "</tr>"; 
} 
?> 

</table> 
</center> 
</body> 
</html> 

我第一次使用SimpleXMLExtractor。我在$ xml變量中只有一個Placemark元素的情況下寫下了完美的代碼。 如果我在$ xml中添加了第二個Placemark元素(實際上是130個元素,說實話!)出現錯誤。 我閱讀關於SimpleXMLExtractor的文檔,但看不到並找到一個好的解決方案。任何幫助將不勝感激!在XML文件中循環

我已更新代碼插入第二個placeMarkkers,而不是整個130組。當有多於一個地標元素時,此類代碼會崩潰。

回答

0

我在php.net上爲SimpleXMLExtractor做了一個快速搜索。它沒有得出任何結果。

請替換此行:

$obj = new SimpleXMLExtractor($xml); 

有了這個:

$obj = simplexml_load_string($xml); 

的另一個問題是,你需要一個根XML標籤。例如,

<placemarkers> 
    <placemarker></placemarker> 
    <placemarker></placemerker> 
</placemarkers> 

此外,複製和你的XML貼到這個網站http://www.xmlvalidation.com/驗證XML。

+0

謝謝拉維,不幸的是它不工作。 – ChemicalWeb

+0

不客氣。有一天我用simplexml_load_string運行你的代碼,我得到的純文本看起來像一張表。您作爲問題發佈的代碼是否包含您提及的第二個地標?您可能需要更新您的問題以包含整個代碼的pastebin。越多的信息越好。 –

+0

正確,輸出是一個填充了由本地函數提取的數據的表格。我在代碼中添加了第二個地標(它只是第一個的複製/粘貼)作爲示例。 – ChemicalWeb