in reply to Re: LibXML and parsing file with DTD
in thread LibXML and parsing file with DTD

Thanks,I changed my code as you suggested and still code the same error.

snippit of new code

my($TaxId) = $DocSum->findnodes('./Item[@Name="TaxId"]'); print OUTFILE $TaxId->to_literal, "\t";

From the error it looks like it doesn't like any of the xml entities all the way from the top nodes (ie. eSummary, DocSum

error again

No declaration for element eSummaryResult No declaration for element DocSum No declaration for element Id No declaration for element Item No declaration for attribute Name of element Item No declaration for attribute Type of element Item

Replies are listed 'Best First'.
Re^3: LibXML and parsing file with DTD
by derby (Abbot) on Jul 29, 2010 at 12:55 UTC

    Hmmm ... what happens if you comment out the validate call?

    -derby

      Thanks! Once I commented out the validate call, it works

      I guess if the validate function doesn't like the xml files then it just dies?

        That's correct. I'm guessing either you cannot actually retrieve the dtd or you're getting some invalid cached copy of the dtd. If you really want to validate, you can load it from a file (rather then let libxml retrieve it via a network call) and then pass the string to the Dtd constructor:

        local $/ = undef; open my $fh, "<", $file || die "cannot open $file - $!\n"; my $str = <$fh>; close $fh; my $dtd = XML::LibXML::Dtd->parse_string( $str );

        -derby