# Copyright (C) 2002-2004 gregoire HUBERT.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Author : gregoire HUBERT
#
# XML_node.objet
#
# This object is an XML node representation
#
# /- name (string)
# xml_node --- attributes (array)
# \- children (array) or value (string)
class xml_node {
var $name;
var $attributes = array();
var $children = array();
var $value = "";
function xml_node($name,$attributes,$children=array(),$value="") {
$this->name = $name;
if (is_array($attributes)) {
$this->attributes = $attributes;
}
$this->children = $children;
$this->value = $value;
}
}
# Copyright (C) 2003-2004 gregoire HUBERT.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Author : gregoire HUBERT
#
# xml_tree class
#
# This object parses an XML stream and offers a tree composed by xml_nodes
#
class xml_tree {
var $xml_stream;
var $current_node;
var $root_node;
var $index;
var $value;
function xml_tree() {
$this->root_node = new xml_node("__ROOT_NODE",array());
$this->current_node = $this->root_node;
}
function add_tree($xml_stream) {
# Managing the parser
$this->xml_stream = $xml_stream;
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1);
if (!xml_parse_into_struct($xml_parser,$this->xml_stream,$this->value,$this->index)) {
xml_parser_free($xml_parser);
die("XML Parse error");
}
xml_parser_free($xml_parser);
# Now, $this->value and $this->index are informed, we can use the get_node methode.
$tab_result = $this->get_node(0,count($this->value) - 1);
$this->root_node->children[] = $tab_result[0];
$this->current_node = $this->root_node;
}
function get_node($index_start,$index_stop) {
#echo " \n";
#echo "GET-NODE($index_start,$index_stop) \n";
# What we are going to return is an array of xml_nodes
$return_tab = array();
# depth is only here to check if everything is all right
$tab_node = $this->value[$index_start];
$depth = $tab_node["level"]-1;
# Now we have to be sure we do not forget a single node
for ($index = $index_start;$index <= $index_stop;$index++) {
#echo "\$index = $index ";
# get the current node
$tab_node = $this->value[$index];
# what type of node is it ?
switch($tab_node["type"]) {
case "complete" :
# Depth integrity check
if ($tab_node["level"] != $depth+1) {
die("ERREUR # contrainte d'intégrité au noeud complet $index, niveau $depth + 1 au lieu de ".$tab_node["level"]);
}
#echo "Noeud complet trouvé position $index TAG ".$tab_node["tag"]." \n";
# Easy one, no children to manage, only a value...
$return_tab[] = new xml_node($tab_node["tag"],$tab_node["attributes"],"",$tab_node["value"]);
break;
case "open" :
# Depth integrity check
if ($tab_node["level"] != $depth +1 ) {
die("ERREUR # contrainte d'intégrité au noeud ouvert $index, niveau $depth au lieu de ".$tab_node["level"]);
}
# Open tag, we re-use this methode to return its children
# Where is the correspondong close tag ?
$node_index = $this->index[$tab_node["tag"]];
$flipped_node_index = array_flip($node_index);
#echo "This ".$tab_node["tag"]." is at coords ".$flipped_node_index[$index]." ";
$i=1;
do {
$next_index = $node_index[$flipped_node_index[$index] + $i++];
$next_tag=$this->value[$next_index];
}
while ($next_tag["level"]!=$tab_node["level"]);
#echo "Ouverture de noeud détectée pos $index TAG ".$tab_node["tag"]." \n Parcours jusqu au $next_index \n";
# good, we can now instanciate our node
$return_tab[] = new xml_node($tab_node["tag"],$tab_node["attributes"],$this->get_node($index+1,$next_index),"");
# As we called the get_node methode, we are sure that nodes have been parsed to the corresponding close tag
$index = $next_index;
break;
case "close" :
# Depth integrity check
if ($tab_node["level"] != $depth ){
die("ERREUR # contrainte d'intégrité au noeud fermé $index, niveau $depth au lieu de ".$tab_node["level"]);
}
#echo "Fermeture de noeud detectée pos $index TAG ".$tab_node["tag"]."
\n";
# This ugly thing is useless because reaching a close tag means that $index==$index_stop but who knows ? =)
# it will be skipped soon
$index = $index_stop;
break;
default:
die("Erreur de type de TAG non déterminé :'".$tab_node["type"]."'");
}
}
# We are out ... returns the array with collected children...
return ($return_tab);
}
# this function browse the xml tree and set the current node to the selected node
function give_node($path) {
if ($path[0]=="/") {
$current_node=$this->root_node;
$path=substr($path,1);
#echo "ABSOLUTE PATH GIVEN=$path ";
}
else {
$current_node = $this->current_node;
}
#echo "PATH GIVEN=$path ";
$tab_path = split("/",$path);
foreach ($tab_path as $node_expr) {
#echo "STUDYING EXPR='$node_expr' ";
$node = $current_node;
$expr_tab = split("\?",$node_expr);
$node_name = $expr_tab[0];
$attr_tab = 0;
if (count($expr_tab)>1) {
##echo "TROUVE AU MOINS UNE CONDITION SUR LES ATTRIBUTS... ";
$attr_expr_tab=split(",",$expr_tab[1]);
$attr_tab=array();
foreach($attr_expr_tab as $attr_expr) {
$attr_split_expr=split("=",$attr_expr);
$attr_tab[$attr_split_expr[0]]=$attr_split_expr[1];
}
}
$last=0;
foreach ($node->children as $children) {
#echo "COMPARING WITH '$children->name' ";
if ($children->name == $node_name) {
##echo "TROUVE NOEUD CORRESPONDANT $node_name ";
if (is_array($attr_tab)) {
$node_attributes = $children->attributes;
foreach ($attr_tab as $key=>$value) {
if ($node_attributes[$key] == $value) {
#echo "ATTRIBUTE & CHANGE CURRENT NODE TO ".$children->name." ";
$current_node = $children;
$last = 1;
}
}
}
else {
##echo "CHILD=".$children->name." ";
#echo "CHANGE CURRENT NODE TO ".$children->name." ";
$current_node = $children;
$last=1;
}
}
if ($last) {
break;
}
}
if (!$last) {
#echo "PATH ERROR $node_name ";
#die("MMmmmh It seems that this file is not a DIA XML format...sorry...");
return 0;
}
}
return $current_node;
}
function browse_tree($path) {
$node = $this->give_node($path);
if (is_object($node)) {
$this->current_node = $node;
return 1;
}
return 0;
}
# this method dumps an html representation of the xml tree
function xml_show($node = "",$level=0,$last=0) {
if ($node=="") {
$node=$this->root_node;
}
if (!is_object($node)) {
die("ERROR : node is not an object");
}
$line="";
for($i=1;$i<=$level;$i++) {
if ((i==$level-1) and ($last)) {
$line.=" ";
}
else {
$line.=" |";
}
if ($i==$level) {
$line.="`-";
}
}
$line.=$node->name;
#echo $line;
$line.="".count($node->children)."";
if (count($node->children)==1) {
$line.=" (".$node->value.") \n";
echo "$line";
}
else {
$line.=" \n";
echo "$line";
$i=1;
foreach($node->children as $children) {
if ($i==count($node->children)) {
$this->xml_show($children,$level+1,1);
}
else {
$this->xml_show($children,$level+1);
}
$i++;
}
}
}
#END_CLASS
}
WITHIN TEMPTATION (nl) - Hydra (2014)

Label : BMG / Universal Music
Sortie du Scud : 3 février 2014
Pays : Pays-Bas
Genre : Metal Pop mélodique
Type : Album
Playtime : 10 Titres - 49 Mins
Mais qu'arrive-t-il à WITHIN TEMPTATION ? Le groupe batave a effleuré la perfection symphonique par le passé (Mother Earth, ça commence à faire loin), avant de migrer lentement et pas vraiment sûrement (ça tâtonne sévère entre The Silent Force et The Heart Of Everything) vers des cieux plus lucratifs, dans l'intention en tous cas ... Même si le site officiel du groupe rappelle que WITHIN TEMPTATION, c'est 3 millions d'albums et DVD vendus dans le monde, une discographie distribuée dans 48 pays différents et 2 récompenses aux World Music Awards, on s'en tamponne. On s'en tamponne grave, même.
Le sextet hollandais n'a pas encore perdu ses fans (pour moi, c'est fait) mais a déjà perdu en route son guitariste / fondateur Robert Westerholt, qui préfère pouponner à la maison. Mais le bonhomme opère dans l'ombre et continue de composer pour le groupe, avec le producteur Daniel Gibson. En toute objectivité, cela avait porté ses fruits sur The Unforgiving, la qualité des compos justifiant à elle-seule le virage entrepris par Sharon Den Adel (chants) & Co. Son successeur, Hydra, installe définitivement WITHIN TEMPTATION sur le trône laissé vacant par EVANESCENCE ... Que la confusion vous soit épargnée, on parle bien du trône des chiottes, pas celui de fer. Sharon vient d'expulser Amy Lee à grands coups de fesses, victoire par K-O.
Pas la peine de la ramener avec le single qui tape bien comme il faut, celui avec Tarja, intitulé "Paradise". La mélodie butte bien, le rythme est entrainant, les filles chantent comme deux anges, pas de problème (c'est Ruud Jolie qui joue ce solo ? le doute est permis). Quoique, en y repensant, entendre Sharon répéter 1 356 849 fois "what about us" et "paradise" finit par lasser ... Et ce n'est que le début du calvaire. Prenons "And We Run" : n'essayez pas de retenir ce titre, Sharon va s'occuper de vous l'enfoncer dans le crâne. Ça commence comme "Sinead" (sur The Unforgiving), des voix célestes s'élèvent pour couvrir ce duo insupportable et improbable entre Madame Den Adel et le rappeur Xzibit, et ça y est, enfin, WITHIN TEMPTATION achève de creuser sa propre tombe.
Pas la peine de m'insulter, Sharon me déçoit et c'est comme ça. On dirait que même les comparses de la brunette en ont ma claque puisque les invités sont légions sur Hydra. Howard Jones, ex-frontman de KILLSWITCH ENGAGE, se prend pour Matt Barlow (l'unique vrai chanteur d'ICED EARTH) pendant "Dangerous" et ses faux airs de Speed Metal batardisé avec le style d'AMORPHIS ... la classe en moins. Je ne vous le cache pas : Sharon répète "dangerous" à tout va. Qui est l'invité suivant ? Ah ben tiens voilà Dave Pirner (le leader de SOUL ASYLUM) pour un duo pas déplaisant : ça fait ballade américaine, ça s'appelle "Whole World Is Watching", et ça contraste tellement avec le reste que ça n'a pas sa place sur Hydra !
Non, parce qu'attendez, je vous ai pas dit : Hydra a un sous-titre, c'est "WITHIN TEMPTATION fait de la soupe et n'arrive même plus à se servir de ses vieux pots". Robert, il veut plus tourner mais il veut bien faire le guest-star et s'essayer à quelques growls quand même, comme dans le passé ! Sûrement pour donner un côté "true evil qui tue" aux mélodies insignifiantes de "Silver Moonlight" et "Tell Me Why", le père Westerholt rote par ci par là, et même les riffs de "Tell Me Why" sentent le Death pas du tout sincère. Pour la scène, on ne sait pas trop comment WITHIN TEMPTATION va reproduire ce fiasco : "eeeeuh chérie, je veux bien péter un coup dans le micro, mais j'ai plus trop envie d'aller me coltiner l'odeur de vos pieds dans le tour bus hein, surtout les tiens d'ailleurs ...".
Oui, oui, je sais, je suis dur avec eux. Mais quand j'entends Sharon m'émouvoir à m'en faire pleurer sur cette ballade, "Edge Of The World", je n'ai que des regrets quant à cette sensibilité qui ne s'éveille que trop rarement, lors d'une ballade ou pas. Et on ne me la fait pas : c'est pas parce que la nana me fait un câlin que j'oublie toutes les crasses qu'elle m'a faites.
Ajouté : Vendredi 12 Décembre 2014 Chroniqueur : NicoTheSpur Score :   Lien en relation: Within Temptation Website Hits: 8282
|