I need to change value in file itself. It is not doing that. I am thinking setAttribute should change value of element in file. But my below code is not doing that even though I am using same. My intention is to change value of <javaTask className = "tool.update.languagepack.MergeConfig"> <arg name="sample" value="false"/>
to <javaTask className = "tool.update.languagepack.MergeConfig"> <arg name="sample" value="true"/> Thanks, Ravi -----Original Message----- From: Wiggins d'Anconia [mailto:[EMAIL PROTECTED] Sent: Monday, June 07, 2004 8:09 PM To: Ravinder Arepally Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: XML::DOM::Parser question ! Ravinder Arepally wrote: > All, > > I am trying to parse a XML file and change an element value. > Below is code of mine where I am doing this. However, setAttribute > doesn't work and it doesn't give any error message too. > I spent enough time and doesn't make sense to me. I get right value > using getAttribute('value). > XML file is also pasted at the end of this mail. Any help or pointer > is greatly appreciated. > Any suggestions in writing better code for this task is also appreciated. > > Thank you, > Ravi. > > --------------------------------------------------- > my $udtTaskFile = > "$depotLocation/updates/$udtBaseName/tasks/$udtBaseName"."_cs_udt.xml" > ; print ("udtTaskfile is : $udtTaskFile \n"); ------- XML file which > is pasted at end of this mail. > Util::safeCopy("$udtTaskFile", "$udtTaskFile".time()); -- I have > Util.pm > > my $parser = new XML::DOM::Parser; > my $doc = $parser->parsefile($udtTaskFile); > > my @taskList = $doc->getElementsByTagName('taskEntry'); > > foreach my $task (@taskList) { > if ($task->getAttribute('uniqueName') eq "MergeConfig"){ > my $javaTask = $task->getElementsByTagName('javaTask'); > if (! $javaTask) { > $log->write("ERROR: Couldn't find any Java tasks in > $udtTaskFile "); > return "Problem configuring installLPI. Couldn't find any > Java Tasks in $udtTaskFile. "; > } > my $innerTask = $javaTask->item(0)->getElementsByTagName('arg'); > if (! $innerTask) { > $log->write("ERROR: Couldn't find any languagepack tasks > in $udtTaskFile "); > return "Problem configuring installLPI. Couldn't find any > languagepack Tasks in $udtTaskFile. "; > } > my $value = $innerTask->item(0)->getAttribute('value'); > print ("value is 333333333333 $value \n"); -------- This prints > right value > $innerTask->item(0)->setAttribute('value', "true"); ----- This > is not working. No error and it doesn't change value > } > } > Please don't cross post, try one list then the other if the first doesn't provide acceptable resolution. <snip sample file> Does it not change the value of the internally represented structure, or in the file itself? Have you tried dumping the structure (not sure if it works with XML::DOM) using Data::Dumper? I am assuming it isn't throwing an exception about missing methods, I tried to track down where setAttribute is inherited from but the XML::DOM tree is a pretty big tangle. Can you be more specific about precisely what isn't working? http://danconia.org -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>