XML, the Perl Way


xmlgrep - grep XML files looking for specific elements


xmlgrep [options] [file ...]

   -help            brief help message
   -man             full documentation


brief help message

full documentation

display the tool version

--root <cond>
look for and return xml chunks matching <cond>

if neither --root nor --file are used then the element(s) that trigger the --cond option is (are) used. If --cond is not used then all elements matching the <cond> are returned

several --root can be provided

--cond <cond>
return the chunks (or file names) only if they contain elements matching <cond>

several --cond can be provided (in which case they are OR'ed)

return only file names (do not generate an XML output)

usage of this option precludes using any of the options that define the XML output: --roots, --encoding, --wrap, --group_by_file or --pretty_print

return only the number of matches in each file

usage of this option precludes using any of the options that define the XML output: --roots, --encoding, --wrap, --group_by_file or --pretty_print

--nb_results <nb>
output only <nb> results

--encoding <enc>
encoding of the xml output (utf-8 by default)

--wrap <tag>
wrap the xml result in the provided tag (defaults to 'xml_grep')

--descr <string>
attributes of the wrap tag (defaults to version="<VERSION>" date="<date>")

--file_wrap <optional_tag>
wrap results for each files into a separate element. By default that element is named file. It has an attribute named filename that gives the name of the file.

the short version of this option is -g

--pretty_print <optional_style>
pretty print the output using XML::Twig styles ('indented', 'record' or 'record_c' are probably what you are looking for)

if the option is used but no style is given then 'indented' is used

short form for this arggument is -s

Condition Syntax

<cond> is an XPath-like expression as allowed by XML::Twig to trigger handlers.


see XML::Twig for a more complete description of the <cond> syntax

options are processedby Getopt::Long so they can start with '-' or '--' and can be abbreviated (-r instead of --root for example)


xmlgrep does a grep on XML files. Instead of using regular expressions it uses XPath expressions (in fact the subset of XPath supported by XML::Twig)

the results can be the names of the files or XML elements containing matching elements.


XML::Twig Getopt::Long


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


Michel Rodriguez <mirod@xmltwig.com>