# xmlstarlet > A command-line XML/XSLT toolkit. > Note: You will likely need to know XPath: . > More information: . - Format an XML document and print to `stdout`: `xmlstarlet format {{path/to/file.xml}}` - XML document can also be piped from `stdin`: `{{cat path/to/file.xml}} | xmlstarlet format` - Print all nodes that match a given XPath: `xmlstarlet select --template --copy-of {{xpath}} {{path/to/file.xml}}` - Insert an attribute to all matching nodes, and print to `stdout` (source file is unchanged): `xmlstarlet edit --insert {{xpath}} --type attr --name {{attribute_name}} --value {{attribute_value}} {{path/to/file.xml}}` - Update the value of all matching nodes in place (source file is changed): `xmlstarlet edit --inplace --update {{xpath}} --value {{new_value}} {{file.xml}}` - Delete all matching nodes in place (source file is changed): `xmlstarlet edit --inplace --delete {{xpath}} {{file.xml}}` - Escape or unescape special XML characters in a given string: `xmlstarlet [un]escape {{string}}` - List a given directory as XML (omit argument to list current directory): `xmlstarlet ls {{path/to/directory}}`