Le code - où je me plante - :
Code : Tout sélectionner
$this->datas = $this->builderDatas( $dom->getElementsByTagName( 'datas' ) );
if( $this->action == 'version' ) {
$elements = $dom->getElementsByTagName( 'datas' );
$version = array();
foreach($elements as $elm0) {
if($elm0->childNodes->length != null) {
foreach($elm0->childNodes as $elm1) { # element level 1
$elm1_name = filter_var(strip_tags($elm1->nodeName), FILTER_SANITIZE_STRING);
if( $elm1_name != '#text') {
$version[$elm1_name] = array();
if($elm1_name == "zao" && $elm1->getAttribute('version')) $version[$elm1_name]['version'] = $elm1->getAttribute('version');
if($elm1->childNodes->length != null) {
foreach($elm1->childNodes as $elm2) { # element level 2
$elm2_name = filter_var(strip_tags($elm2->nodeName), FILTER_SANITIZE_STRING);
$elm2_value = filter_var(strip_tags($elm2->nodeValue), FILTER_SANITIZE_STRING);
if($elm2_name != '#text') {
$version[$elm1_name][$elm2_name] = array();
if($elm2->childNodes->length != null) {
//$version[$elm1_name][$elm2_name] = array();
foreach($elm2->childNodes as $elm3) {
$elm3_name = filter_var(strip_tags($elm3->nodeName), FILTER_SANITIZE_STRING); var_dump($elm3_name);
if($elm3_name != '#text') {
//$version[$elm1_name][$elm2_name][$elm3_name] = array();
$elm3_value = filter_var(strip_tags($elm3->nodeValue), FILTER_SANITIZE_STRING);
$version[$elm1_name][$elm2_name][$elm3_name] = $elm3_value;
} else {
$version[$elm1_name][$elm2_name] = $elm2_value;
}
}
}
}
unset($elm2_name, $elm2_value);
}
unset($elm2);
}
}
unset($elm1_name);
}
unset($elm1);
}
}
unset($elm0);
if(!empty($version)) $this->version = $version;
unset($elements, $version);
}
$this->head1 = $this->builderDatas( $dom->getElementsByTagName( 'h1' ) );
}
else $this->datas = NULL;
- s'il y a un élément de niveau 3 ou plusieurs, alors nommer la clé|l'index par le biais de l'information 'nodeName' et lui attribuer la valeur ayant celle de 'nodeValue'
- sinon attribué la valeur nodeValue de l'élément de niveau 2 ...
En fait, j'arrive à traiter toutes les éléments jusqu'au niveau 2, mais pas niveau 3 !
Code : Tout sélectionner
array(3) {
["zao"]=>
array(4) {
["version"]=>
string(5) "0.1.5"
["date"]=>
string(35) "2015-08-26 20:15:43.912878767 +0200"
["name"]=>
string(25) "Z -> Another Object (web)"
["url"]=>
string(32) "https://framagit.org/hucste/ZAO/"
}
["h5bp"]=>
array(3) {
["name"]=>
string(16) "HTML5BoilerPlate"
["url"]=>
string(29) "https://html5boilerplate.com/"
["version"]=>
string(5) "5.2.0"
}
["bootstrap"]=>
array(4) {
["name"]=>
string(9) "Bootstrap"
["url"]=>
string(24) "https://getbootstrap.com"
["version"]=>
string(5) "3.3.6"
["integrity"]=>
string(261) "
sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7
sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS
sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r
"
}
}