Как вытащить все вложенные дочерние узлы из XML? - PullRequest
0 голосов
/ 11 мая 2019

У меня есть простой XML с вложенными узлами grandChild, подобный этому

<parent>
    <child type="reference">
        <grandChild name="aaa" action="None">
            <Attribute name="xxx">1</Attribute>
            <grandChild name="bbb" action="None">
                <Attribute name="xxx">1</Attribute>
            </grandChild>
            <grandChild name="ccc" action="None">
                <Attribute name="xxx">1</Attribute>
            </grandChild>
        </grandChild>
        <grandChild name="ddd" action="None">
                <Attribute name="xxx">1</Attribute>
        </grandChild>
    </child>
</parent>

И я хочу получить список всех узлов grandChild только. Я могу достичь при итерации каждого узла, и это дает мне список одного уровня, но не для всего XML. Можно ли добиться этого с помощью единого информационного переплетения?

Мой простой dataweave выглядит следующим образом

%dw 2.0
output application/json
---
payload.parent.child.*grandChild.*grandChild map {
    "@name": $.@name,
    "Attribute" : $.*Attribute map {
        "@name" : $.@name,
        "#text" : trim($)
    }
}

Желаемый вывод

[
  {
    "@name": "bbb",
    "Attribute": [
      {
        "@name": "xxx",
        "#text": "1"
      }
    ]
  },
  {
    "@name": "ccc",
    "Attribute": [
      {
        "@name": "xxx",
        "#text": "1"
      }
    ]
  },
  {
    "@name": "aaa",
    "Attribute": [
      {
        "@name": "xxx",
        "#text": "1"
      }
    ]
  },
  {
    "@name": "ddd",
    "Attribute": [
      {
        "@name": "xxx",
        "#text": "1"
      }
    ]
  }
]
...