I am trying to modify a Perl script that I found online which uses XML :: Parser Which identifies specific elements of XML documents and many times that each element contains a Pearl script and its documentation can be found:
Use strict; Use warnings; Use XML :: Parser; File :: Use Search; @rgv or die "Usage: xmlales dir [dir ...] \ n"; My% element_count; My $ parser = xml :: parser-> new (handlers = & gt; {start = & gt; & amp; start_element;}); Search & amp; Process_xml, @ARGV; Print "$ _ ($ element_count {$ _}) \ n"% element_count for the ordered key; Go out; Sub process_xml {$ parser-> parsefile ($ _) if substr ($ _, -4) eq '.xml' and -f; } Sub start_element {my ($ expat, $ element, @attrval) = @_; $ Element_count {$ element} ++; } Generates an output like this:
account (15614) account_NO (15504) active (15614) activity (6658) address (280 98) My question is how can I include the original node in the output?
The name of the parent node is given by current_element , such that < Code> $ name = $ expat- & gt; Current_element '/' $ Element and voilĂ! If you want to avoid warnings for empty parents' names, then my $ parent = $ expat- & gt; Current_element || ''; $ Name = "$ parent / $ element"; Then the handler gets this:
sub start_element {my ($ expat, $ element, @ Attrval) = @_; My $ root = $ expat- & gt; Current_emment || ''; My $ name = "$ parent / $ element"; $ Element_count {$ name} ++; }
No comments:
Post a Comment