Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

XML::LibXML::Error (3)

Name

XML::LibXML::Error - Structured Errors

Synopsis

eval { ... };
if (ref($@)) {
# handle a structured error (XML::LibXML::Error object)
} elsif ($@) {
# error, but not an XML::LibXML::Error object
} else {
# no error
}

$XML::LibXML::Error::WARNINGS=1;
$message = $@->as_string();
print $@->dump();
$error_domain = $@->domain();
$error_code = $@->code();
$error_message = $@->message();
$error_level = $@->level();
$filename = $@->file();
$line = $@->line();
$nodename = $@->nodename();
$error_str1 = $@->str1();
$error_str2 = $@->str2();
$error_str3 = $@->str3();
$error_num1 = $@->num1();
$error_num2 = $@->num2();
$string = $@->context();
$offset = $@->column();
$previous_error = $@->_prev();

Description

User Contributed Perl Documentation                      XML::LibXML::Error(3)



NAME
       XML::LibXML::Error - Structured Errors

SYNOPSIS
         eval { ... };
                 if (ref($@)) {
                   # handle a structured error (XML::LibXML::Error object)
                 } elsif ($@) {
                   # error, but not an XML::LibXML::Error object
                 } else {
                   # no error
                 }

         $XML::LibXML::Error::WARNINGS=1;
         $message = $@->as_string();
         print $@->dump();
         $error_domain = $@->domain();
         $error_code = $@->code();
         $error_message = $@->message();
         $error_level = $@->level();
         $filename = $@->file();
         $line = $@->line();
         $nodename = $@->nodename();
         $error_str1 = $@->str1();
         $error_str2 = $@->str2();
         $error_str3 = $@->str3();
         $error_num1 = $@->num1();
         $error_num2 = $@->num2();
         $string = $@->context();
         $offset = $@->column();
         $previous_error = $@->_prev();

DESCRIPTION
       The XML::LibXML::Error class is a tiny frontend to libxml2's structured
       error support. If XML::LibXML is compiled with structured error
       support, all errors reported by libxml2 are transformed to
       XML::LibXML::Error objects. These objects automatically serialize to
       the corresponding error messages when printed or used in a string
       operation, but as objects, can also be used to get a detailed and
       structured information about the error that occurred.

       Unlike most other XML::LibXML objects, XML::LibXML::Error doesn't wrap
       an underlying libxml2 structure directly, but rather transforms it to a
       blessed Perl hash reference containing the individual fields of the
       structured error information as hash key-value pairs. Individual items
       (fields) of a structured error can either be obtained directly as
       $@->{field}, or using autoloaded methods such as $@->field() (where
       field is the field name). XML::LibXML::Error objects have the following
       fields: domain, code, level, file, line, nodename, message, str1, str2,
       str3, num1, num2, and _prev (some of them may be undefined).

       $XML::LibXML::Error::WARNINGS
             $XML::LibXML::Error::WARNINGS=1;

           Traditionally, XML::LibXML was suppressing parser warnings by
           setting libxml2's global variable xmlGetWarningsDefaultValue to 0.
           Since 1.70 we do not change libxml2's global variables anymore; for
           backward compatibility, XML::LibXML suppresses warnings. This
           variable can be set to 1 to enable reporting of these warnings via
           Perl "warn" and to 2 to report hem via "die".

       as_string
             $message = $@->as_string();

           This function serializes an XML::LibXML::Error object to a string
           containing the full error message close to the message produced by
           libxml2 default error handlers and tools like xmllint. This method
           is also used to overload "" operator on XML::LibXML::Error, so it
           is automatically called whenever XML::LibXML::Error object is
           treated as a string (e.g. in print $@).

       dump
             print $@->dump();

           This function serializes an XML::LibXML::Error to a string
           displaying all fields of the error structure individually on
           separate lines of the form 'name' => 'value'.

       domain
             $error_domain = $@->domain();

           Returns string containing information about what part of the
           library raised the error. Can be one of: "parser", "tree",
           "namespace", "validity", "HTML parser", "memory", "output", "I/O",
           "ftp", "http", "XInclude", "XPath", "xpointer", "regexp", "Schemas
           datatype", "Schemas parser", "Schemas validity", "Relax-NG parser",
           "Relax-NG validity", "Catalog", "C14N", "XSLT", "validity".

       code
             $error_code = $@->code();

           Returns the actual libxml2 error code. The XML::LibXML::ErrNo
           module defines constants for individual error codes. Currently
           libxml2 uses over 480 different error codes.

       message
             $error_message = $@->message();

           Returns a human-readable informative error message.

       level
             $error_level = $@->level();

           Returns an integer value describing how consequent is the error.
           XML::LibXML::Error defines the following constants:

           o   XML_ERR_NONE = 0

           o   XML_ERR_WARNING = 1 : A simple warning.

           o   XML_ERR_ERROR = 2 : A recoverable error.

           o   XML_ERR_FATAL = 3 : A fatal error.

       file
             $filename = $@->file();

           Returns the filename of the file being processed while the error
           occurred.

       line
             $line = $@->line();

           The line number, if available.

       nodename
             $nodename = $@->nodename();

           Name of the node where error occurred, if available. When this
           field is non-empty, libxml2 actually returned a physical pointer to
           the specified node.  Due to memory management issues, it is very
           difficult to implement a way to expose the pointer to the Perl
           level as a XML::LibXML::Node. For this reason, XML::LibXML::Error
           currently only exposes the name the node.

       str1
             $error_str1 = $@->str1();

           Error specific. Extra string information.

       str2
             $error_str2 = $@->str2();

           Error specific. Extra string information.

       str3
             $error_str3 = $@->str3();

           Error specific. Extra string information.

       num1
             $error_num1 = $@->num1();

           Error specific. Extra numeric information.

       num2
             $error_num2 = $@->num2();

           In recent libxml2 versions, this value contains a column number of
           the error or 0 if N/A.

       context
             $string = $@->context();

           For parsing errors, this field contains about 80 characters of the
           XML near the place where the error occurred. The field
           "$@->column()" contains the corresponding offset. Where N/A, the
           field is undefined.

       column
             $offset = $@->column();

           See "$@->column()" above.

       _prev
             $previous_error = $@->_prev();

           This field can possibly hold a reference to another
           XML::LibXML::Error object representing an error which occurred just
           before this error.

AUTHORS
       Matt Sergeant, Christian Glahn, Petr Pajas

VERSION
       2.0201

COPYRIGHT
       2001-2007, AxKit.com Ltd.

       2002-2006, Christian Glahn.

       2006-2009, Petr Pajas.

LICENSE
       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-------------------------------+
       |ATTRIBUTE TYPE |       ATTRIBUTE VALUE         |
       +---------------+-------------------------------+
       |Availability   | library/perl-5/xml-libxml-532 |
       +---------------+-------------------------------+
       |Stability      | Volatile                      |
       +---------------+-------------------------------+

NOTES
       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from
       http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-
       LibXML-2.0201.tar.gz.

       Further information about this software can be found on the open source
       community website at http://search.cpan.org/~shlomif/XML-LibXML/.



perl v5.32.0                      2019-05-25             XML::LibXML::Error(3)