mirror of
https://github.com/mikefarah/yq.git
synced 2026-07-06 04:45:39 +00:00
Better xml docs
This commit is contained in:
parent
078d1d0c76
commit
e84a50db2e
61
usage/xml.md
61
usage/xml.md
@ -4,25 +4,19 @@ Encode and decode to and from XML. Whitespace is not conserved for round trips -
|
|||||||
|
|
||||||
Consecutive xml nodes with the same name are assumed to be arrays.
|
Consecutive xml nodes with the same name are assumed to be arrays.
|
||||||
|
|
||||||
All values in XML are assumed to be strings - but you can use `from_yaml` to parse them into their correct types:
|
XML content data and attributes are created as fields. This can be controlled by the `'--xml-attribute-prefix` and `--xml-content-name` flags - see below for examples.
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
yq e -p=xml '.myNumberField |= from_yaml' my.xml
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```xml
|
|
||||||
<cat name="tiger">meow</cat>
|
|
||||||
```
|
|
||||||
|
|
||||||
The content of the node will be set as a field in the map with the key "+content". Use the `--xml-content-name` flag to change this.
|
|
||||||
|
|
||||||
## Parse xml: simple
|
## Parse xml: simple
|
||||||
|
Notice how all the values are strings, see the next example on how you can fix that.
|
||||||
|
|
||||||
Given a sample.xml file of:
|
Given a sample.xml file of:
|
||||||
```xml
|
```xml
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<cat>meow</cat>
|
<cat>
|
||||||
|
<says>meow</says>
|
||||||
|
<legs>4</legs>
|
||||||
|
<cute>true</cute>
|
||||||
|
</cat>
|
||||||
```
|
```
|
||||||
then
|
then
|
||||||
```bash
|
```bash
|
||||||
@ -30,7 +24,34 @@ yq e -p=xml '.' sample.xml
|
|||||||
```
|
```
|
||||||
will output
|
will output
|
||||||
```yaml
|
```yaml
|
||||||
cat: meow
|
cat:
|
||||||
|
says: meow
|
||||||
|
legs: "4"
|
||||||
|
cute: "true"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Parse xml: number
|
||||||
|
All values are assumed to be strings when parsing XML, but you can use the `from_yaml` operator on all the strings values to autoparse into the correct type.
|
||||||
|
|
||||||
|
Given a sample.xml file of:
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<cat>
|
||||||
|
<says>meow</says>
|
||||||
|
<legs>4</legs>
|
||||||
|
<cute>true</cute>
|
||||||
|
</cat>
|
||||||
|
```
|
||||||
|
then
|
||||||
|
```bash
|
||||||
|
yq e -p=xml ' (.. | select(tag == "!!str")) |= from_yaml' sample.xml
|
||||||
|
```
|
||||||
|
will output
|
||||||
|
```yaml
|
||||||
|
cat:
|
||||||
|
says: meow
|
||||||
|
legs: 4
|
||||||
|
cute: true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Parse xml: array
|
## Parse xml: array
|
||||||
@ -39,8 +60,8 @@ Consecutive nodes with identical xml names are assumed to be arrays.
|
|||||||
Given a sample.xml file of:
|
Given a sample.xml file of:
|
||||||
```xml
|
```xml
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<animal>1</animal>
|
<animal>cat</animal>
|
||||||
<animal>2</animal>
|
<animal>goat</animal>
|
||||||
```
|
```
|
||||||
then
|
then
|
||||||
```bash
|
```bash
|
||||||
@ -49,8 +70,8 @@ yq e -p=xml '.' sample.xml
|
|||||||
will output
|
will output
|
||||||
```yaml
|
```yaml
|
||||||
animal:
|
animal:
|
||||||
- "1"
|
- cat
|
||||||
- "2"
|
- goat
|
||||||
```
|
```
|
||||||
|
|
||||||
## Parse xml: attributes
|
## Parse xml: attributes
|
||||||
@ -75,7 +96,7 @@ cat:
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Parse xml: attributes with content
|
## Parse xml: attributes with content
|
||||||
Content is added as a field, using the default content name of '+content'. Use `--xml-content-name` to set your own.
|
Content is added as a field, using the default content name of `+content`. Use `--xml-content-name` to set your own.
|
||||||
|
|
||||||
Given a sample.xml file of:
|
Given a sample.xml file of:
|
||||||
```xml
|
```xml
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user