Selector múltiple
Ejercicio
Sección titulada «Ejercicio»Dado el siguiente payload de entrada:
<?xml version="1.0"?><catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description> </book> <book id="bk103"> <author>Corets, Eva</author> <title>Maeve Ascendant</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-11-17</publish_date> <description>After the collapse of a nanotechnology society in England, the young survivors lay the foundation for a new society.</description> </book></catalog>Escribí una transformación DataWeave que produzca la siguiente salida en JSON:
{ "authors": [ "Gambardella, Matthew", "Ralls, Kim", "Corets, Eva" ]}- En el caso de
xmldonde se suelen repetir las etiquetas, podemos utilizar el selector múltiple.*para obtener esas etiquetas repetidas en el mismo nivel. - El selector múltiple, siempre devolverá un Array.
Ver solución
%dw 2.0output application/json---{ authors: payload.catalog.*book.author}Notas:
- Como
bookes una etiqueta que se repite varias veces, podemos utilizarpayload.catalog.*bookpara obtener todos los libros. Ya que si utilizáramos solamentepayload.catalog.bookobtendríamos el primer libro. - Como
payload.catalog.*bookdevuelve un Array de objetos, simplemente podemos agregarle.authorque retornará todos los valores cuya clave seaAuthorgenerando el nuevo Array que estamos esperando.
{Code mat;}
Aprendé MuleSoft: cursos, ejercicios y exámenes. Gratis y sin registro.
© 2026 Codebymat