in reply to Re: XML::LibXML - How to extract an element including the elements within?
in thread XML::LibXML - How to extract an element including the elements within?

Thanks poj,

This works great for me, and I also realized that I can differentiate the type of node that I get (plain text vs. element):

my ($node) = $dom->findnodes('/doc/text'); my @children = $node->childNodes; foreach my $child (@children) { my $type = ref($child); # $type contains the type of the node, ex: "XML::LibXML::Element" }

From there, I can have a plain text string (no tags) and a separate list of all the elements embedded.

Have a great day!

TA

  • Comment on Re^2: XML::LibXML - How to extract an element including the elements within?
  • Download Code

Replies are listed 'Best First'.
Re^3: XML::LibXML - How to extract an element including the elements within?
by haukex (Archbishop) on May 10, 2019 at 19:55 UTC
    my $type = ref($child);

    This is a very brittle way of doing it - it's possible that XML::LibXML::Element could be subclassed, and this check would fail, which is why I would recommend against it. It's possible to do $child->isa('XML::LibXML::Element'), but XML::LibXML provides an API to check the node type: $child->nodeType == XML_ELEMENT_NODE (admittedly not a very Perlish way of doing it, but it's based on the libxml2 API).

      Hi!

      Thanks again for helping me writing a more robust script! Very good advises, very good learning... :-)

      Have a great one!

      TA