XML Query All
XML Query All
Sección titulada «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.
Cómo funciona
Sección titulada «Cómo funciona»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ámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
xml | string | — | El texto XML (de Read XML o de otra consulta). También un XML embebido, como el contenido de un CDATA. |
xpath | string | — | La expresión XPath, ej. //Producto/Codigo o //cac:InvoiceLine/cbc:LineExtensionAmount. |
Parámetros opcionales
Sección titulada «Parámetros opcionales»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
namespaces | Dictionary | — | 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. |
defaultPrefix | string | "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)).
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa 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 / anidamiento | El xml no es válido o supera los límites. Ver Errores comunes del paquete. |
Ejemplo
Sección titulada «Ejemplo»Read XML path = ruta → output: xmlXML Query All xml = xml xpath = "//Producto/Codigo" → output: codigosLog 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: valoresActividades relacionadas
Sección titulada «Actividades relacionadas»- XML Query Text — solo el primer valor.
- XML to Dictionary — las líneas completas como lista de diccionarios.
- For Each — recorrer los resultados.