1
在這個讀取XML文件的php腳本中,訪問嵌套節點的內部循環不會返回任何數據。在PHP中獲取嵌套節點的XML
PHP腳本
<?php
// load SimpleXML
$nodes = new SimpleXMLElement('communities.xml', null, true);
echo <<<EOF
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Top</th>
<th>Left</th>
<th>Width</th>
<th>Height</th>
<th>Urls</th>
</tr>
EOF;
foreach($nodes as $node) // loop through
{
echo "<tr>";
echo " <td>".$node['ID']."</td>";
echo " <td>".$node->NAME."</td>";
echo " <td>".$node->TOP."</td>";
echo " <td>".$node->LEFT."</td>";
echo " <td>".$node->WIDTH."</td>";
echo " <td>".$node->HEIGHT."</td>";
echo " <td>";
$urls = $node->URLS;
/* $urls = $xml->xpath('/COMMUNITIES/COMMUNITY/URLS/URL'); */
foreach($urls as $url)
{
echo ' '.$url->NAME;
}
echo ' </td>';
echo '</tr>';
}
echo '</table>';
?>
XML文件
<?xml version="1.0" encoding="ISO-8859-1" ?>
<COMMUNITIES>
<COMMUNITY ID="c001">
<NAME>Town Services</NAME>
<TOP>50</TOP>
<LEFT>50</LEFT>
<WIDTH>200</WIDTH>
<HEIGHT>300</HEIGHT>
<URLS>
<URL ID="U001">
<NAME>Google.com</NAME>
<URL>http://www.google.com</URL>
</URL>
<URL ID="U002">
<NAME>Bing.com</NAME>
<URL>http://www.bing.com</URL>
</URL>
<URL ID="U003">
<NAME>Yahoo.com</NAME>
<URL>http://www.yahoo.com</URL>
</URL>
<URL ID="U004">
<NAME>Aol.com</NAME>
<URL>http://www.aol.com</URL>
</URL>
</URLS>
</COMMUNITY>
<COMMUNITY ID="c002">
<NAME>Local Stores</NAME>
<TOP>50</TOP>
<LEFT>260</LEFT>
<WIDTH>200</WIDTH>
<HEIGHT>150</HEIGHT>
<URLS>
<URL ID="U001">
<NAME>Walgreens</NAME>
<URL>http://www.walgreens.com</URL>
</URL>
<URL ID="U002">
<NAME>Bing.com</NAME>
<URL>http://www.bing.com</URL>
</URL>
<URL ID="U003">
<NAME>Yahoo.com</NAME>
<URL>http://www.yahoo.com</URL>
</URL>
</URLS>
</COMMUNITY>
<COMMUNITY ID="c003">
<NAME>Attractions</NAME>
<TOP>50</TOP>
<LEFT>470</LEFT>
<WIDTH>200</WIDTH>
<HEIGHT>300</HEIGHT>
<URLS>
<URL ID="U001">
<NAME>Museum</NAME>
<URL>http://www.mfa.org</URL>
</URL>
<URL ID="U002">
<NAME>Park</NAME>
<URL>http://www.bing.com</URL>
</URL>
</URLS>
</COMMUNITY>
<COMMUNITY ID="c004">
<NAME>Online Stores</NAME>
<TOP>370</TOP>
<LEFT>50</LEFT>
<WIDTH>200</WIDTH>
<HEIGHT>150</HEIGHT>
<URLS>
<URL ID="U001">
<NAME>Amazon.com</NAME>
<URL>http://www.amazon.com</URL>
</URL>
<URL ID="U002">
<NAME>Target.com</NAME>
<URL>http://www.target.com</URL>
</URL>
</URLS>
</COMMUNITY>
<COMMUNITY ID="c005">
<NAME>Online Forums</NAME>
<TOP>370</TOP>
<LEFT>300</LEFT>
<WIDTH>200</WIDTH>
<HEIGHT>200</HEIGHT>
<URLS>
<URL ID="U001">
<NAME>Technet</NAME>
<URL>http://www.Microsoft.com</URL>
</URL>
<URL ID="U002">
<NAME>MSDN</NAME>
<URL>http://www.Microsoft.com</URL>
</URL>
</URLS>
</COMMUNITY>
<COMMUNITY ID="c006">
<NAME>Travel</NAME>
<TOP>370</TOP>
<LEFT>480</LEFT>
<WIDTH>200</WIDTH>
<HEIGHT>200</HEIGHT>
<URLS>
<URL ID="U001">
<NAME>Southwest</NAME>
<URL>http://www.mfa.org</URL>
</URL>
<URL ID="U002">
<NAME>Northwest</NAME>
<URL>http://www.bing.com</URL>
</URL>
</URLS>
</COMMUNITY>
</COMMUNITIES>
我也試圖訪問使用XPath內部節點和返回的錯誤。
$urls = $xml->xpath('/COMMUNITIES/COMMUNITY/URLS/URL');
什麼是訪問內部節點的正確方法?謝謝。
這工作。謝謝! – user823527