Hi,

Thanks for the solutions of the recent problems.

I would like to traverse a dir on the HDD at a part of the XML generation.
So I generated about 75% of an xml file with xml::writer, and it comes a
Projectstructure tag. Between these tag I simply list a dir into empty tags 
<Object attr=...../>.
If recursion is ready, the closing Projectstructure tag closes it. And non 
recursive XML
generation continues.

$output = IO::File->new(">default.xml");

$writer = XML::Writer->new(OUTPUT => $output, DATA_MODE => 1, DATA_INDENT => "  
", ENCODING => "utf-8", NEWLINES => 0 );

Traverse($dir, $writer);
sub Traverse
{
                opendir(DIR, $dir) or die "Cannot open directory $dir: $!\n";
                my @files = readdir(DIR);
                closedir(DIR);
                foreach my $file (@files) {
                    # generate XML here

                               print $file;
                               if(-d $file and ($file !~ /^\.\.?$/) ) {
                                               # make dir branch
                                               Traverse($file);
                               }
                               $writer->emptyTag("Object", "Name" => $file");
                               # make file branch
                }
}


...

$writer->startTag("ProjectStructure");

Traverse("C:\\ph");

$writer->endTag("ProjectStructure");

But it gives a hideous error:

Attempt to insert empty tag after close of document element at t2tot3Project 
line 72.

How can it be? I call the subrutine in the middle of a tag. How can be the 
document closed?

Tamas

Reply via email to