use TeamSite::WFtask; use TeamSite::WFworkflow; use LWP::UserAgent; use XML::DOM; $iwhome = getiwhome(); $iwmnt = getiwmount(); my $task = new TeamSite::WFtask($ARGV[1]); my $task_id = $ARGV[1]; my $workarea = $task->GetArea(); my @iw_files = $task->GetFiles(); my $iw_file; $modDir = $workarea; $modDir =~ s!/!\\!i; #loop over files foreach $iw_file (@iw_files) { $iw_file =~ m#templatedata\\([^\\]*)\\([^\\]*)\\data\\(.*)#; my $category = $1; my $type = $2; my $dcr = $3; my $dcr = "test.xml"; #$iw_file = "e:\\iw-home\\bin\\bespoke\\test.xml"; if ($dcr){ print " Category : $category \n"; print " Type : $type \n"; print " DCR : $dcr \n"; #if ($type eq "mainarticle"){ print " File : $iw_file \n"; $xml = change_dcr_attr("$iwmnt$modDir\\$iw_file","External Link Heading","test","file",""); $xml =~ s/\r/ /g; $xml =~ s/\n/ /g; $xml =~ s/\t/ /g; $xml =~ s/ //g; print "$xml"; $xml = change_dcr_attr("$iwmnt$modDir\\$iw_file","Body Copy Heading","test","string",$xml); print "$xml"; #} } } sub change_dcr_attr { #print " And the games begin... \n"; my ($dcr,$element_name,$element_value,$type,$xml) = @_; my $parser=new XML::DOM::Parser; #parse the document print "type : $what \n"; if ($type eq "file"){ $dcr_doc=$parser->parsefile($dcr) || die "unable to parse document: $!"; } else { $dcr_doc=$parser->parsestring($xml) || die "unable to parse document: $!" } #get all tags my $dcr_items = $dcr_doc->getElementsByTagName('item'); # iterate over all tags for my $i (0..$dcr_items->getLength-1) { my $dcr_item=$dcr_items->item($i); # get the value of the ‘name’ attrribute my $dcr_item_name = $dcr_item->getAttribute("name"); #process only required field #e.g.’Surname’ next unless $dcr_item_name eq $element_name; # drill down to the tag my $dcr_item_child = $dcr_item->getFirstChild; # get down to the text we want to change my $dcr_text_node = $dcr_item_child->getFirstChild if defined $dcr_item_child; if (defined ($dcr_text_node)) { if (( $dcr_text_node->getNodeType == TEXT_NODE) ) { # finally change the value $dcr_text_node->setData($element_value); } } else { if ($type eq "string"){ print "Error\n"; return 0; } } } return $dcr_doc->toString; #return the whole DCR XML as a string } sub getiwhome { my $iwhome = TeamSite::Config::iwgethome(); #only needed on solaris #$iwhome =~ s#\\#/#g; return $iwhome; } sub getiwmount { my $iwmount = TeamSite::Config::iwgetmount(); $iwmount =~ s#\\#/#g; return $iwmount; } tech fffffffffffffffffffffffffsdsdsd test