在XML文件中循环
问题描述:
<?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组。当有多于一个地标元素时,此类代码会崩溃。
答
我在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。
谢谢拉维,不幸的是它不工作。 – ChemicalWeb
不客气。有一天我用simplexml_load_string运行你的代码,我得到的纯文本看起来像一张表。您作为问题发布的代码是否包含您提及的第二个地标?您可能需要更新您的问题以包含整个代码的pastebin。越多的信息越好。 –
正确,输出是一个填充了由本地函数提取的数据的表格。我在代码中添加了第二个地标(它只是第一个的复制/粘贴)作为示例。 – ChemicalWeb