yq/pkg/yqlib/doc/usage/xml.md
2021-12-21 14:46:38 +11:00

1.4 KiB

XML

At the moment, yq only supports decoding xml (into one of the other supported output formats).

As yaml does not have the concept of attributes, these are converted to regular fields with a prefix to prevent clobbering. Consecutive xml nodes with the same name are assumed to be arrays.

All values in XML are assumed to be strings.

Parse xml: simple

Given a sample.xml file of:

<?xml version="1.0" encoding="UTF-8"?>
<cat>meow</cat>

then

yq e sample.xml

will output

cat: meow

Parse xml: array

Consecutive nodes with identical xml names are assumed to be arrays.

Given a sample.xml file of:

<?xml version="1.0" encoding="UTF-8"?>
<animal>1</animal><animal>2</animal>

then

yq e sample.xml

will output

animal:
  - "1"
  - "2"

Parse xml: attributes

Attributes are converted to fields, with the attribute prefix.

Given a sample.xml file of:

<?xml version="1.0" encoding="UTF-8"?>
<cat legs="4"><legs>7</legs></cat>

then

yq e sample.xml

will output

cat:
  +legs: "4"
  legs: "7"

Parse xml: attributes with content

Content is added as a field, using the content name

Given a sample.xml file of:

<?xml version="1.0" encoding="UTF-8"?>
<cat legs="4">meow</cat>

then

yq e sample.xml

will output

cat:
  +content: meow
  +legs: "4"