Ir al contenido

XML Set Value

Tipo: xml-set-value  ·  Paquete: XML Activities v1.1.1  ·  Salida: string

Cambia el valor de texto del primer elemento (o atributo) que coincide con un XPath y devuelve el XML modificado. Úsala para actualizar datos en un documento XML: un estado, una fecha, un monto.

Localiza la primera coincidencia de xpath en el xml, le pone el nuevo value y devuelve el XML completo modificado (como string). Recuerda guardar el resultado con Write XML.

  • Si el XPath apunta a un atributo (//cbc:ID/@schemeID), cambia el valor del atributo.
  • Si apunta a un elemento, reemplaza todo su contenido por el texto de value: si el elemento tenía hijos, se eliminan. Para cambiar un dato interno, apunta al elemento hoja (//Cliente/Nombre, no //Cliente).
  • value puede ser de cualquier tipo: se escribe su texto (true, 1500). null deja el elemento vacío.
  • Solo cambia la primera coincidencia. Para cambiar varias, recorre los índices ((//Item)[1], (//Item)[2]…) o usa un XPath más preciso.
  • Si no hay coincidencias, la actividad falla (no devuelve el XML sin cambios).

El XML devuelto lleva sangría y no incluye la declaración <?xml …?>; Write XML la escribe al guardar.

Los prefijos de namespace del documento funcionan directamente. Ver Namespaces.

ParámetroTipoPor defectoDescripción
xmlstring—El texto XML.
xpathstring—XPath al elemento o atributo a actualizar, ej. //Factura/Estado o //cbc:ID/@schemeID.
valueobject—El nuevo valor. Se escribe como texto.
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 un string con el XML completo modificado.

MensajeCausa y solución
Ningún nodo coincide con el XPath indicado.El XPath no encuentra nada. Revísalo con XML Query Text; si el documento tiene namespace por defecto, usa el prefijo d: (el log te lo recuerda).
El XPath debe seleccionar un elemento o un atributo.El XPath calcula un valor (count(…)) o selecciona un nodo de texto (…/text()). Apunta al elemento o al atributo.
'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: … / El prefijo 'x:' no está declarado …Ver Errores comunes del paquete.
Read XML path = ruta → output: xml
XML Set Value xml = xml xpath = "//Factura/Estado" value = "Pagada" → output: xmlNuevo
Write XML path = ruta content = xmlNuevo

Cambiar un atributo de una factura UBL:

XML Set Value xml = factura xpath = "//cbc:PayableAmount/@currencyID" value = "USD" → output: factura