es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Hay alguna forma mejor de exportar datos de un objeto de cadena en Xquery en formato CSV con comillas dobles?

Es común exportar una lista de cadenas en formato CSV con comillas dobles en un archivo de registro mediante Xquery para ML.

Me pregunto si hay una mejor manera de hacerlo a partir de la lista de cadenas.
Actualmente tengo que usar un bloque de fn:concat('"', $value , '"') en repetidas ocasiones para hacerlo.
Se vuelve difícil de leer si hay una lista larga de valores para procesar.

A continuación se muestra el código actual para un caso demo simple.

xquery version "1.0-ml";

<p>let $values := ('cadena 1', 'cadena 2', 'cadena N')</p>

<p>return fn:string-join( $values ! fn:concat('"', . , '"'), ',')

La salida esperada es "cadena 1","cadena 2","cadena N"

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en XQuery para ML, puedo sugerir una forma más sencilla y eficiente de exportar una lista de cadenas de texto en formato CSV con comillas dobles. En lugar de utilizar muchos bloques de fn:concat(), puedes usar la función fn:replace() para reemplazar cada coma por "," y luego rodear toda la cadena con comillas dobles.

    Aquí tienes un código de ejemplo que demuestra este enfoque:

    xquery version "1.0-ml";
    
    let $values := ('string 1', 'string 2', 'string N')
    let $csv := string-join($values, ",")
    let $quotedCSV := concat('"', fn:replace($csv, ',', '","'), '"')
    
    return $quotedCSV
    

    La función fn:replace() se utiliza para reemplazar cada coma por ",", que es la forma estándar de escapar las comas en el formato CSV. Luego, la cadena resultante se rodea con comillas dobles utilizando la función concat().

    Este enfoque es mucho más sencillo y fácil de leer en comparación con el uso de múltiples bloques de fn:concat(). También elimina la necesidad de escapar las comillas dobles utilizando la función htmlspecialchars().

    La salida esperada de este código es "string 1","string 2","string N".

Comments are closed.