lablett has asked for the wisdom of the Perl Monks concerning the following question:
Edited 2001-03-23 by Oviduse 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 Cop +y 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 docum +ent: $!"; } else { $dcr_doc=$parser->parsestring($xml) || die "unable to parse doc +ument: $!" } #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 $dc +r_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; } <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <record name="ktest"> <item delimiter=", " name="______________________ PRIMARY CON +TENT"> </item> <item delimiter=", " name="File Location"> <value>tech</value> </item> <item delimiter=", " name="Body Copy Heading"> <value>fffffffffffffffffffffffffsdsdsd</value> </item> <item delimiter=", " name="Body Replicant"> <value> <item delimiter=", " name="Body Copy"> <value>test</value> </item> <item delimiter=", " name="______________________ I +MAGES"> </item> <item delimiter=", " name="Image"> <value></value> </item> <item delimiter=", " name="Caption Heading"> <value></value> </item> <item delimiter=", " name="Caption Copy"> <value></value> </item> </value> </item> </record>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: parse xml
by mirod (Canon) on Mar 23, 2001 at 21:41 UTC | |
|
Re: parse xml
by aardvark (Pilgrim) on Mar 23, 2001 at 19:44 UTC |