in reply to Re^2: XML::LibXML problem
in thread XML::LibXML problem

I do not get your exact problem. To get children elements of a particular parent element, just do
$parent->findnodes("*")
To get both elements and text nodes, do
$parent->findnodes("* | text()")
To get text nodes and elements containing text, do
$parent->findnodes("*[text()] | text()")
And so on.

Replies are listed 'Best First'.
Re^4: XML::LibXML problem
by norricorp (Initiate) on Dec 29, 2011 at 16:11 UTC
    Yes that will work but I am looking for just the next level only not the whole tree. So for instance
    <library> <book attr1="zzz"> <title>xxxx</title> <author>yyyyy</author> </book> <book attr1="sssss"> ---- </book> <book attr1="dddd"> ---- </book> </library>
    So, if i was at library then I just want all of the books, no title or author elements. And if I do * then I get back all of the elements from the whole tree. Regards, John
      if I do * then I get back all of the elements from the whole tree
      Not true. Or at least I do not get it, and you should not get it either:
      perl -E ' use XML::LibXML; my $dom = XML::LibXML->load_xml(string => q{ <library> <book attr1="zzz"> <title>xxxx</title> <author>yyyyy</author> </book> <book attr1="sssss"> ---- </book> <book attr1="dddd"> ---- </book> </library> }); my ($l) = $dom->findnodes("/library"); say $_->getName for $l->findnodes("*[text()] | text()");' #text book #text book #text book #text
        OK, I have been running this again and obvioulsy I changed something (my millionth change of the day) and this has worked.
        So, query is /xs:schema/xs:element/xs:complexType/xs:sequence/xs:element/xs:complexType/xs:sequence/xs:element@name
        does work!
        many thanks for your patience and help. John