foreach $line (@navmod) { #sorting taken out, file now pre-sorted outside this perl routine chomp($line); print "$line\n"; print LOG "$line\n"; $linecount++; print LOG "Line $linecount\n"; #($ParentNodeId, $label, $PrimaryURL, $NavNodeId, $SecondaryURL, $UrlDirName) = split /,/, $line; ($ParentNodeId,$NodeId, $level, $canode, $label, $theme, $template, $active, $secgrp, $secacc, $ptemp, $stemp, $altlabel, $fragsoff, $canodeid, $f2, $clist1, $clist2, $clist3, $clist4, $clist5, $clist6, $clist7, $clist8, $clist9, $clist10, $clist11, $clist12, $clist13) = split /,/, $line; #get children of root and create sections if ($ParentNodeId eq 1) { #add node to %proc_secs #$proc_secs{$NodeId} = $PrimaryURL; print LOG "Level eq 1\n"; #print "$label is a Child of a Child\n"; #create section my $section = ""; my $esec = new XML::Twig::Elt('section',$section); #need to get label and urkdirname #label is as per model #urlDirName is label less spaces $esec->set_att('label',$label); $label =~ s/\s//g; $esec->set_att('urlDirName',$label); $esec->set_att('active',$active); $esec->set_att('dSecurityGroup',$secgrp); $esec->set_att('dDocAccount',$secacc); $esec->set_att('primaryUrl',$ptemp); $esec->set_att('secondaryUrl',$stemp); $esec->set_att('AltLabel',$altlabel); $esec->set_att('FragmentsOff',$fragsoff); $esec->set_att('ContentArchitectureNodeId',$canodeid); #this will need changing for real run $esec->set_att('FragmentsOffSiteLevel',$f2); $esec->set_att('ContentList_CriteriaMetaData',$clist1); $esec->set_att('ContentList_ResultCount',$clist2); $esec->set_att('ContentList_MaxGetSearchResultCount',$clist3); $esec->set_att('ContentList_RangeMetaDataField',$clist4); $esec->set_att('ContentList_RangeMin', $clist5); $esec->set_att('ContentList_RangeMax',$clist6); $esec->set_att('ContentList_ExtraCriteria',$clist7); $esec->set_att('ContentList_SortSpec',$clist8); $esec->set_att('csFragMaxDepth',$clist9); $esec->set_att('csFragStartNodeId',$clist10); $esec->set_att('ContentList_Title',$clist11); $esec->set_att('ContentList_ShowDetailsOff', $clist12); $esec->set_att('ContentList_OptionalDisplayField',$clist13); $esec->set_att('nodeId',$NodeId); $esec->paste('last_child', $root); print LOG "$esec\n"; $twig->flush; $twig->print; } #get children of children and create sections if ($ParentNodeId gt 1) { #get relevant section with a catch all #need to use get_xpath command my @sections = $twig->get_xpath('section[@nodeId = "'.$ParentNodeId.'"]'); print "@sections\n"; foreach my $sectioncount (@sections) { #check for more than one? NodeIds should be unique. my $numsections = @sections; print LOG "The number of sections returned is $numsections\n\n\n"; if ($numsections gt 1) { die "Critical failure at section \n".$sectioncount->sprint."\nMore than one section found with id\n"; } print LOG " parent node is $sectioncount\n"; print $sectioncount->sprint; print "\n\n"; #now add the section my $section = ""; my $esec = new XML::Twig::Elt('section',$section); print LOG "Level is $level\n"; $esec->set_att('label',$label); $label =~ s/\s//g; $esec->set_att('urlDirName',$label); $esec->set_att('active',$active); $esec->set_att('dSecurityGroup',$secgrp); $esec->set_att('dDocAccount',$secacc); $esec->set_att('primaryUrl',$ptemp); $esec->set_att('secondaryUrl',$stemp); $esec->set_att('AltLabel',$altlabel); $esec->set_att('FragmentsOff',$fragsoff); $esec->set_att('ContentArchitectureNodeId',$canodeid); #this will need changing for real run $esec->set_att('FragmentsOffSiteLevel',$f2); $esec->set_att('ContentList_CriteriaMetaData',$clist1); $esec->set_att('ContentList_ResultCount',$clist2); $esec->set_att('ContentList_MaxGetSearchResultCount',$clist3); $esec->set_att('ContentList_RangeMetaDataField',$clist4); $esec->set_att('ContentList_RangeMin', $clist5); $esec->set_att('ContentList_RangeMax',$clist6); $esec->set_att('ContentList_ExtraCriteria',$clist7); $esec->set_att('ContentList_SortSpec',$clist8); $esec->set_att('csFragMaxDepth',$clist9); $esec->set_att('csFragStartNodeId',$clist10); $esec->set_att('ContentList_Title',$clist11); $esec->set_att('ContentList_ShowDetailsOff', $clist12); $esec->set_att('ContentList_OptionalDisplayField',$clist13); $esec->set_att('nodeId',$NodeId); $esec->paste('last_child', $sectioncount); print LOG "$esec\n"; $twig->flush; $twig->print; } } } $twig->print; #print out xml file open (OUT, "> $output"); $twig->set_pretty_print( 'nsgmls'); $twig->print(\*OUT); close OUT; ####
##
## my @sections = $twig->get_xpath('section[@nodeId = "'.$ParentNodeId.'"]');