> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.danaconnect.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# ¿Qué es XPath/JsonPath y cómo usarlo en DANAconnect?

# ¿Qué es XPath/JsonPath y cómo usarlo en DANAconnect?

## Resumen rápido

**XPath/JsonPath** es la ruta que permite encontrar un dato dentro de una estructura.

Use **JsonPath** cuando la respuesta esté en formato **JSON**:

```text
$.cliente.email
```

Use **XPath** cuando la respuesta esté en formato **XML**:

```text
/cliente/email
```

En DANAconnect, este campo se utiliza para indicar qué valor debe tomarse desde una respuesta y guardarse o utilizarse dentro del flujo.

---

## Explicación extendida

Cuando configuras algunos nodos o acciones dentro de DANAconnect, es posible que encuentres que debes llenar algo llamado **XPath/JsonPath**.

Este campo sirve para indicar **de dónde debe tomar DANAconnect un dato específico** dentro de una respuesta, archivo, estructura XML o estructura JSON.

**XPath/JsonPath es la ruta que le indica al sistema dónde encontrar un dato específico dentro de un texto estructurado en formato JSON o XML.**

Por ejemplo, si una respuesta contiene muchos datos de un cliente, XPath o JsonPath permite indicar exactamente cuál de esos datos se debe usar para actualizar un campo, tomar una decisión o continuar el flujo.

---

## ¿Por qué usamos este campo en DANAconnect?

Muchas integraciones no devuelven un dato aislado, sino una estructura completa con varios valores.

Por ejemplo, un servicio puede responder algo como esto:

```json
{
  "cliente": {
    "nombre": "María Pérez",
    "email": "maria.perez@correo.com",
    "estado": "aprobado",
    "documento": {
      "numero": "V12345678",
      "tipo": "Cédula"
    }
  }
}
```

Dentro de esa respuesta hay varios datos posibles:

* Nombre del cliente
* Email
* Estado
* Número de documento
* Tipo de documento

Si quieres tomar solamente el email, debes indicar la ruta hacia ese dato.

En JsonPath sería:

```text
$.cliente.email
```

Si quieres tomar el número de documento, sería:

```text
$.cliente.documento.numero
```

---

## ¿Qué es JsonPath?

**JsonPath** se usa cuando la información viene en formato **JSON**.

JSON es un formato muy común en integraciones, APIs y respuestas de sistemas externos.

Un JSON suele verse así:

```json
{
  "solicitud": {
    "id": "SOL-10045",
    "estado": "pendiente",
    "monto": 2500
  }
}
```

Para obtener el estado de la solicitud, se usaría:

```text
$.solicitud.estado
```

El resultado sería:

```text
pendiente
```

Para obtener el monto, se usaría:

```text
$.solicitud.monto
```

El resultado sería:

```text
2500
```

---

## ¿Qué significa el símbolo `$`?

En JsonPath, el símbolo `$` representa el inicio de la estructura.

Es decir, significa:

> “Empieza a buscar desde el principio de la respuesta.”

Por ejemplo:

```text
$.cliente.nombre
```

Se lee así:

> Desde el inicio de la respuesta, entra en `cliente` y toma el valor de `nombre`.

---

## ¿Qué es XPath?

**XPath** se usa cuando la información viene en formato **XML**.

XML es otro formato usado por algunos sistemas, especialmente en integraciones más antiguas o servicios empresariales.

Un XML puede verse así:

```xml
<cliente>
  <nombre>María Pérez</nombre>
  <email>maria.perez@correo.com</email>
  <estado>aprobado</estado>
</cliente>
```

Para obtener el email del cliente, se usaría:

```text
/cliente/email
```

El resultado sería:

```text
maria.perez@correo.com
```

Para obtener el estado, se usaría:

```text
/cliente/estado
```

El resultado sería:

```text
aprobado
```

---

## ¿Cuál debo usar: XPath o JsonPath?

Depende del formato de la información que estés recibiendo.

| Si la respuesta viene en… | Usa… |
| ---- |
| JSON | JsonPath |
| XML | XPath |

Una forma sencilla de reconocerlo:

Si ves llaves `{ }`, probablemente es **JSON**.

```json
{
  "estado": "aprobado"
}
```

Si ves etiquetas `< >`, probablemente es **XML**.

```xml
<estado>aprobado</estado>
```

---

## ¿Dónde se usa XPath/JsonPath en DANAconnect?

El campo **XPath/JsonPath** puede utilizarse cuando necesitas extraer un valor específico de una respuesta o resultado para guardarlo en un campo del flujo o de la base de datos.

Por ejemplo, en el **Nodo de Documentos**, dentro de la pestaña **Configuración**, puedes usar **Add Field to Update** para actualizar un campo con un valor obtenido desde una estructura JSON o XML.

Allí debes completar:

| Campo | Qué significa |
| ---- |
| Field Name | El campo que quieres actualizar |
| XPath/JsonPath | La ruta donde está el dato que quieres guardar |

Ejemplo:

| Field Name | XPath/JsonPath |
| ---- |
| ESTADO_DOCUMENTO | `$.document.status` |
| ID_DOCUMENTO | ``` $.``document.id ``` |
| FECHA_INDEXACION | `$.document.created_at` |

Esto le indica a DANAconnect que debe tomar esos valores desde la respuesta y guardarlos en los campos correspondientes.

---

## Ejemplo práctico con JsonPath

Supongamos que el Nodo de Documentos devuelve una respuesta como esta:

```json
{
  "document": {
    "id": "DOC-789456",
    "status": "indexed",
    "created_at": "2026-07-03T14:25:00"
  }
}
```

Si quieres guardar el identificador del documento, usarías:

```text
$.document.id
```

Resultado:

```text
DOC-789456
```

Si quieres guardar el estado del documento, usarías:

```text
$.document.status
```

Resultado:

```text
indexed
```

Si quieres guardar la fecha de creación o indexación, usarías:

```text
$.document.created_at
```

Resultado:

```text
2026-07-03T14:25:00
```

---

## Ejemplo práctico con XPath

Supongamos que una respuesta XML contiene:

```xml
<document>
  <id>DOC-789456</id>
  <status>indexed</status>
  <created_at>2026-07-03T14:25:00</created_at>
</document>
```

Para obtener el identificador del documento, usarías:

```text
/document/id
```

Resultado:

```text
DOC-789456
```

Para obtener el estado:

```text
/document/status
```

Resultado:

```text
indexed
```

Para obtener la fecha:

```text
/document/created_at
```

Resultado:

```text
2026-07-03T14:25:00
```

---

## ¿Qué pasa si escribo mal la ruta?

Si la ruta XPath o JsonPath no corresponde con la estructura recibida, DANAconnect no podrá encontrar el valor.

Esto puede causar que:

* El campo no se actualice.
* El valor quede vacío.
* El flujo no guarde el dato esperado.
* El resultado no pueda usarse en pasos posteriores.

Por eso es importante validar que la ruta coincida exactamente con la estructura de la respuesta.

---

## Errores frecuentes

### Usar JsonPath cuando la respuesta es XML

Si la respuesta tiene etiquetas como `<cliente>`, `<estado>` o `<document>`, no debes usar JsonPath.

Incorrecto:

```text
$.document.status
```

Correcto:

```text
/document/status
```

---

### Usar XPath cuando la respuesta es JSON

Si la respuesta tiene llaves `{ }`, debes usar JsonPath.

Incorrecto:

```text
/document/status
```

Correcto:

```text
$.document.status
```

---

### Escribir mal el nombre del campo

Los nombres deben coincidir con la estructura de la respuesta.

Si la respuesta dice:

```json
{
  "document": {
    "status": "indexed"
  }
}
```

La ruta correcta es:

```text
$.document.status
```

No:

```text
$.document.estado
```

---

### Olvidar niveles intermedios

Si el dato está dentro de una estructura anidada, debes incluir todos los niveles.

Ejemplo:

```json
{
  "cliente": {
    "documento": {
      "numero": "V12345678"
    }
  }
}
```

Correcto:

```text
$.cliente.documento.numero
```

Incorrecto:

```text
$.documento.numero
```

---

## Recomendación

Antes de completar el campo **XPath/JsonPath**, revisa la estructura de la respuesta que estás recibiendo.

Identifica:

1. Si la respuesta está en formato JSON o XML.
2. El dato exacto que quieres guardar.
3. La ruta completa hasta ese dato.
4. El campo de DANAconnect donde quieres almacenar el valor.

---