Ir al contenido

XML Query All

Tipo: xml-query-all  ·  Paquete: XML Activities v1.1.1  ·  Salida: List

Evalúa una expresión XPath y devuelve todos los valores que coinciden, como una lista. Úsala cuando el XML tiene varios elementos repetidos (líneas de una factura, productos, registros) y quieres recorrerlos todos.

Aplica el xpath al xml y devuelve la lista de textos de todas las coincidencias (elementos, atributos o nodos de texto), en el orden del documento. El texto de cada coincidencia se calcula igual que en XML Query Text: un elemento con hijos da el texto de todos sus descendientes, unido. Ver XPath.

Si el XPath calcula un valor único (count(//Item), sum(//Total)), la lista trae un solo elemento con ese valor como texto (["3"]).

Los prefijos de namespace del documento funcionan directamente (//cac:InvoiceLine/cbc:ID) y el namespace por defecto se escribe con d:. Ver Namespaces. Si no hay coincidencias y el documento tiene namespace por defecto, el log te recuerda usar ese prefijo.

No modifica el xml de entrada.

ParámetroTipoPor defectoDescripción
xmlstring—El texto XML (de Read XML o de otra consulta). También un XML embebido, como el contenido de un CDATA.
xpathstring—La expresión XPath, ej. //Producto/Codigo o //cac:InvoiceLine/cbc:LineExtensionAmount.
ParámetroTipoPor defectoDescripción
namespacesDictionary—Prefijos extra o que reemplazan a los del documento (prefijo → URI). Los declarados en el XML se registran solos. Desde la versión 1.1.0.
defaultPrefixstring"d"Prefijo con que se escribe en el XPath el namespace por defecto del documento (xmlns="…"). Vacío equivale a "d". Desde la versión 1.1.0.

Devuelve una List de string, una entrada por coincidencia y en el orden del documento. Si no hay ninguna, una lista vacía (no null): puedes pasarla directo a For Each sin comprobarla.

Los valores son siempre texto: para sumar importes, conviértelos con una expresión (p. ej. toNumber(valor)).

MensajeCausa y solución
'xml' es obligatorio. / 'xpath' es obligatorio.El parámetro quedó vacío o su expresión dio null.
La expresión XPath «…» no es válida: …Sintaxis incorrecta en el XPath.
El prefijo 'x:' no está declarado en el XML ni en 'namespaces'. Prefijos disponibles: ….Usa uno de los prefijos de la lista o defínelo en namespaces.
Mensaje del analizador XML / DTD / tamaño / anidamientoEl xml no es válido o supera los límites. Ver Errores comunes del paquete.
Read XML path = ruta → output: xml
XML Query All xml = xml xpath = "//Producto/Codigo" → output: codigos
Log message = "Productos: " + count(codigos)
For Each items = codigos itemVariable = codigo
└─ activities:
... procesar cada código ...

Los valores de las líneas de una factura UBL:

XML Query All xml = factura xpath = "//cac:InvoiceLine/cbc:LineExtensionAmount" → output: valores