mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
wip
This commit is contained in:
parent
e16167ff26
commit
3c7ccf0bc4
@ -91,6 +91,10 @@ func (dec *xmlDecoder) createMap(n *xmlNode) (*yaml.Node, error) {
|
|||||||
|
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
labelNode.HeadComment = dec.processComment(n.HeadComment)
|
labelNode.HeadComment = dec.processComment(n.HeadComment)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if i == len(n.Children)-1 {
|
||||||
labelNode.FootComment = dec.processComment(n.FootComment)
|
labelNode.FootComment = dec.processComment(n.FootComment)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,3 +22,48 @@ XML nodes that have attributes then plain content, e.g:
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
## Round trip: with comments
|
||||||
|
A best effort is made, but comment positions and white space are not preserved perfectly.
|
||||||
|
|
||||||
|
Given a sample.xml file of:
|
||||||
|
```xml
|
||||||
|
|
||||||
|
<!-- before cat -->
|
||||||
|
<cat>
|
||||||
|
<!-- in cat before -->
|
||||||
|
<x>3<!-- multi
|
||||||
|
line comment
|
||||||
|
for x --></x>
|
||||||
|
<!-- before y -->
|
||||||
|
<y>
|
||||||
|
<!-- in y before -->
|
||||||
|
<d><!-- in d before -->z<!-- in d after --></d>
|
||||||
|
|
||||||
|
<!-- in y after -->
|
||||||
|
</y>
|
||||||
|
<!-- in_cat_after -->
|
||||||
|
</cat>
|
||||||
|
<!-- after cat -->
|
||||||
|
|
||||||
|
```
|
||||||
|
then
|
||||||
|
```bash
|
||||||
|
yq e -p=xml '.' sample.xml
|
||||||
|
```
|
||||||
|
will output
|
||||||
|
```yaml
|
||||||
|
# before cat
|
||||||
|
cat:
|
||||||
|
# in cat before
|
||||||
|
x: "3" # multi
|
||||||
|
# line comment
|
||||||
|
# for x
|
||||||
|
y:
|
||||||
|
# in y before
|
||||||
|
# in d before
|
||||||
|
d: z # in d after
|
||||||
|
# in y after
|
||||||
|
# before y in_cat_after
|
||||||
|
# after cat
|
||||||
|
```
|
||||||
|
|
||||||
|
@ -254,13 +254,13 @@ var xmlScenarios = []xmlScenario{
|
|||||||
// expected: expectedXmlWithComments,
|
// expected: expectedXmlWithComments,
|
||||||
// scenarioType: "encode",
|
// scenarioType: "encode",
|
||||||
// },
|
// },
|
||||||
// {
|
{
|
||||||
// description: "Round trip: with comments",
|
description: "Round trip: with comments",
|
||||||
// subdescription: "A best effort is made, but comment positions and white space are not preserved perfectly.",
|
subdescription: "A best effort is made, but comment positions and white space are not preserved perfectly.",
|
||||||
// input: inputXmlWithComments,
|
input: inputXmlWithComments,
|
||||||
// expected: expectedRoundtripXmlWithComments,
|
expected: expectedRoundtripXmlWithComments,
|
||||||
// scenarioType: "roundtrip",
|
scenarioType: "roundtrip",
|
||||||
// },
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func testXmlScenario(t *testing.T, s xmlScenario) {
|
func testXmlScenario(t *testing.T, s xmlScenario) {
|
||||||
|
Loading…
Reference in New Issue
Block a user