2016-06-08 14 views
0

Ich versuche, PHP zu verwenden, um ein zufälliges XML-Element aus einer Liste von Städten auszuwählen, aber wann immer ich fühle, dass ich es behoben habe, bekomme ich den gleichen Fehler.Wählen Sie zufälliges XML-Element - funktioniert nicht

Ich bin ziemlich neu in PHP und habe viele Hindernisse überwunden, aber das ist eine, die ich nicht herausfinden kann.

Der Fehler ist:

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-content/themes/watchrepairs-2016/index.php:125 Stack trace: #0 /var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-content/themes/watchrepairs-2016/index.php(125): SimpleXMLElement->__construct('towns.xml', 1, true) #1 /var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-includes/template-loader.php(75): include('/var/www/dev.we...') #2 /var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-blog-header.php(19): require_once('/var/www/dev.we...') #3 /var/www/dev.weclarkwatchrepairs.co.uk/wordpress/index.php(17): require('/var/www/dev.we...') #4 {main} thrown in /var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-content/themes/watchrepairs-2016/index.php on line 125

Hier ist der PHP-Code:

$towns = new SimpleXmlElement("towns.xml", 1, true); 
$randomTown = array_rand($towns->xpath("ROW")); 

<h3><?php echo $randomTown[0]->FIELD2 . ", " . $randomTown[0]->FIELD4; ?></h3> 

Hier ist ein Beispiel für die XML

<?xml version="1.0"?> 
<ROWSET> 
<ROW> 
<FIELD1>1</FIELD1> 
<FIELD2>Aaron&apos;s Hill</FIELD2> 
<FIELD3>Surrey</FIELD3> 
<FIELD4>England</FIELD4> 
<FIELD5>SU957435</FIELD5> 
<FIELD6>495783</FIELD6> 
<FIELD7>143522</FIELD7> 
<FIELD8>51.18291</FIELD8> 
<FIELD9>-0.63098</FIELD9> 
<FIELD10>GU7 2</FIELD10> 
<FIELD11>South East</FIELD11> 
<FIELD12>Suburban Area</FIELD12> 
</ROW> 
<ROW> 
<FIELD1>2</FIELD1> 
<FIELD2>Abbas Combe</FIELD2> 
<FIELD3>Somerset</FIELD3> 
<FIELD4>England</FIELD4> 
<FIELD5>ST707226</FIELD5> 
<FIELD6>370749</FIELD6> 
<FIELD7>122688</FIELD7> 
<FIELD8>51.00283</FIELD8> 
<FIELD9>-2.41825</FIELD9> 
<FIELD10>BA8 0</FIELD10> 
<FIELD11>South West</FIELD11> 
<FIELD12>Village</FIELD12> 
</ROW> 
</ROWSET> 

Antwort

0

Es gibt Probleme mit array_rand zu verwenden, da diese Funktion gibt Array-Elemente nicht zurück. Es gibt den Index eines zufälligen Array-Elements zurück. Versuchen Sie, diesen Code zu verwenden:

<?php 

$towns = new SimpleXmlElement("towns.xml", 1, true); 
$rows = $towns->xpath("ROW"); 
$randomTown = array_rand($rows); 
?> 

<h3><?php echo $rows[$randomTown]->FIELD2 . ", " . 
       $rows[$randomTown]->FIELD4; ?></h3> 
Verwandte Themen