HiveBrain v1.2.0
Get Started
← Back to all entries
snippetbashTip

xmlstarlet — A XML/XSLT toolkit. Note: You will likely need to know XPath: <https://developer.mozilla.org/en-US/d

Submitted by: @import:tldr-pages··
0
Viewed 0 times
toolkitcommandnotexsltxmlstarletclixmlyou

Problem

How to use the xmlstarlet command: A XML/XSLT toolkit. Note: You will likely need to know XPath: <https://developer.mozilla.org/en-US/docs/Web/XPath>. More information: <https://xmlstar.sourceforge.net/docs.php>.

Solution

xmlstarlet — A XML/XSLT toolkit. Note: You will likely need to know XPath: <https://developer.mozilla.org/en-US/docs/Web/XPath>. More information: <https://xmlstar.sourceforge.net/docs.php>.

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}}

Code Snippets

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}}

Context

tldr-pages: common/xmlstarlet

Revisions (0)

No revisions yet.