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

Ich verwende SimpleXMLExtractor zum allerersten Mal. Ich habe einen solchen Code geschrieben, der perfekt funktioniert, falls nur ein Placemark-Element in der $ xml-Variablen vorhanden ist. Wenn ich ein zweites Placemark-Element in $ xml hinzugefügt habe (eigentlich 130 Elemente, um ehrlich zu sein!), Werden Fehler angezeigt. Ich habe Dokumentation über SimpleXMLExtractor gelesen, konnte aber keine gute Lösung finden und finden. Jede Hilfe würde sehr geschätzt werden!Looping in XML-Datei

Ich habe den Code mit einem zweiten Platzhalter anstelle der gesamten Gruppe 130 aktualisiert. Ein solcher Code bricht zusammen, wenn mehr als ein Ortsmarkierungselement vorhanden ist.

Antwort

0

Ich habe eine schnelle Suche auf php.net für SimpleXMLExtractor. Es ergab keine Ergebnisse.

Bitte ersetzen Sie diese Zeile:

$obj = new SimpleXMLExtractor($xml); 

mit diesem:

$obj = simplexml_load_string($xml); 

Das andere Problem ist, dass Sie ein Root-XML-Tag benötigen. Zum Beispiel

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

auch, kopieren und fügen Sie Ihre XML in diese http://www.xmlvalidation.com/ Website Ihr XML zu validieren.

+0

Danke Ravi, leider funktioniert es nicht. – ChemicalWeb

+0

Gern geschehen. Neulich habe ich Ihren Code mit simplexml_load_string ausgeführt, ich erhalte einfachen Text, der wie eine Tabelle aussieht. Hat der Code, den Sie als Frage gepostet haben, den 2. Platzmarker, über den Sie gesprochen haben? Möglicherweise möchten Sie Ihre Frage aktualisieren, um eine Pastebin Ihres gesamten Codes einzuschließen. Je mehr Informationen, desto besser. –

+0

Korrekt, die Ausgabe ist eine Tabelle, die mit Daten gefüllt ist, die von der nativen Funktion extrahiert wurden. Ich habe eine zweite Ortsmarke als Beispiel in den Code eingefügt (was nur eine Kopie/Paste der ersten ist). – ChemicalWeb