PHP: Utilisation de simplexml à boucle à travers tous les niveaux d'un fichier XML
J'ai une fonction qui utilise simplexml pour revenir au premier niveau de nœuds dans un fichier XML et de les écrire dans une liste non ordonnée:
function printAssetMap() {
$xml = simplexml_load_file(X_ASSETS);
$assets = $xml->asset;
$html = '<ul>'."\n";
foreach ($assets as $asset) {
$html .= '<li id="asset'.$asset->asset_assetid.'"><ins> </ins><a href="#">'.$asset->asset_name.' ['.$asset->asset_assetid.']</a></li>'."\n";
}//end foreach
$html .= '</ul>'."\n";
return $html;
}//printAssetMap()
XML que je suis à l'aide, qui a des nœuds imbriqués:
<?xml version="1.0"?>
<assets>
<asset>
<asset_name>Home</asset_name>
<asset_url>/home</asset_url>
<asset_assetid>1</asset_assetid>
</asset>
<asset>
<asset_name>Projects</asset_name>
<asset_url>/projects</asset_url>
<asset_assetid>2</asset_assetid>
<asset>
<asset_name>Portfolio</asset_name>
<asset_url>/projects/portfolio</asset_url>
<asset_assetid>3</asset_assetid>
</asset>
<asset>
<asset_name>Current Jobs</asset_name>
<asset_url>/projects/current-jobs</asset_url>
<asset_assetid>4</asset_assetid>
</asset>
</asset>
</assets>
Maintenant, je commence à ajouter des nœuds enfants des nœuds que je suis en train de revenir. Est-il un moyen de faire une boucle par TOUS les niveaux de nœuds enfants dans un fichier xml, même si je ne sais pas combien de niveaux y sont, et de les ajouter à ma liste?
Quelques exemples XML s'il vous plaît.
Mis à jour le post avec XML.
Mis à jour le post avec XML.
OriginalL'auteur Nic Hubbard | 2010-01-24
Vous devez vous connecter pour publier un commentaire.
Donc, fondamentalement, ce que vous devez faire est une fonction qui prend chaque
<asset/>
enfant du nœud actuel, construit le HTML puis vérifie si le nœud actuel a<asset/>
enfants de son propre, et maintient les recursing au plus profond de l'arbre.Voici comment vous pouvez le faire:
Par le chemin, je m'attends à une fonction nommée "printX" impression ou l'écho de quelque chose, plutôt que de le retourner. Peut être devriez-vous le nom de ces fonctions "buildX" ?
OriginalL'auteur Josh Davis
vous avez besoin d'utiliser une fonction récursive. voici un exemple qui génère un tableau à partir d'XML. C'est à partir de PHP docs - http://www.php.net/manual/en/ref.simplexml.php. Vous pouvez modifier cette sortie est une liste de.
OriginalL'auteur Josh
Cela va retourner un tableau avec tous les nœuds dans le document.
OriginalL'auteur Jam35B0nd