选择随机 XML 元素 - 无效
Pick random XML element - not working
我正在尝试使用 PHP 从我拥有的城镇列表中随机选择一个 XML 元素,但每当我觉得我可能已经修复它时,我都会遇到同样的错误。
我是 PHP 的新手,克服了很多障碍,但这是我想不通的障碍。
错误是:
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
这是 PHP 代码:
$towns = new SimpleXmlElement("towns.xml", 1, true);
$randomTown = array_rand($towns->xpath("ROW"));
<h3><?php echo $randomTown[0]->FIELD2 . ", " . $randomTown[0]->FIELD4; ?></h3>
这是 XML
的示例
<?xml version="1.0"?>
<ROWSET>
<ROW>
<FIELD1>1</FIELD1>
<FIELD2>Aaron'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>
使用array_rand
有问题,因为这个函数没有return数组元素。它 returns 是一个随机数组元素的索引。尝试使用此代码:
<?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>
我正在尝试使用 PHP 从我拥有的城镇列表中随机选择一个 XML 元素,但每当我觉得我可能已经修复它时,我都会遇到同样的错误。
我是 PHP 的新手,克服了很多障碍,但这是我想不通的障碍。
错误是:
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
这是 PHP 代码:
$towns = new SimpleXmlElement("towns.xml", 1, true);
$randomTown = array_rand($towns->xpath("ROW"));
<h3><?php echo $randomTown[0]->FIELD2 . ", " . $randomTown[0]->FIELD4; ?></h3>
这是 XML
的示例<?xml version="1.0"?>
<ROWSET>
<ROW>
<FIELD1>1</FIELD1>
<FIELD2>Aaron'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>
使用array_rand
有问题,因为这个函数没有return数组元素。它 returns 是一个随机数组元素的索引。尝试使用此代码:
<?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>