2017-05-30 143 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