Compartir a través de


CURSORTOXML( ) (Función)

Convierte un cursor Visual FoxPro en texto XML.

CursorToXML(nWorkArea | cTableAlias, cOutput [, nOutputFormat 
[, nFlags [, nRecords [, cSchemaName [, cSchemaLocation [, cNameSpace ]]]]]])

Devuelve

Numérico. EL número de bytes escrito en el archivo o variable de memoria.

Parámetros

  • nWorkArea
    Especifica el área de trabajo de la tabla a partir de la cual se crea la cadena XML. Si se especifica 0 o nada, Visual FoxPro utiliza el área de trabajo actual.

  • cTableAlias
    Especifica el alias de la tabla a partir de la cual se crea la cadena XML.

  • cOutput
    La ruta y el nombre del archivo o el nombre de la variable de memoria a los que se envían los resultados. Si nFlags se establece para el resultado de la variable de memoria (el valor predeterminado), se devuelve el XML a la variable de memoria. Si la variable de memoria no existe, se creará. Si nFlags se establece para el resultado del archivo (512), y el archivo no existe, éste se creará. Si el archivo ya existe, se sobrescribirá. Se respeta la configuración de SAFETY.

  • nOutputFormat
    Especifica el formato de los resultados de la cadena XML, según la tabla siguiente:

    nOuputFormat Descripción
    1 – ELEMENTS XML centrado en elementos (valor predeterminado)
    2 – ATTRIBUTES XML centrado en atributos
    3 – RAW Genérico, XML centrado en atributos
  • nFlags
    Especifica el tipo de esquema XML que se produce según la tabla siguiente:

    nFlag Bit Descripción del resultado
    0 0000 XML con formato UTF-8 (valor predeterminado)
    1 0001 XML sin formato (cadena continua)
    2 0010 Se escriben elementos vacíos, con elementos de apertura y de cierre (por ejemplo, <cc04><cc04/>).
    4 0100 Conserva los espacios en blanco de los campos.
    8 1000 Ajusta campos Memo en secciones CDATA.
    16 10000 Codificación de resultados
    32 100000 Codificación de resultados
    512 1000000000 cOutput es un nombre de archivo. El valor predeterminado de nFlag, 0, crea una variable de memoria.

    Nota   Cuando la codificación de resultados es UTF-8 (la predeterminada), la Declaración XML no contiene el atributo Encoding= (ningún atributo de codificación = UTF-8).

    Cuando la codificación de resultados predeterminada se establece en la Página de códigos del cursor o de la tabla, el atributo de codificación se escribe de acuerdo con la tabla siguiente.

    Nota   Los indicadores de codificación se establecen mediante la combinación de los bits 4 y 5 (0010000).

    Indicador de codificación Bits 4 y 5 Descripción
    +0 00 Windows 1252 (predeterminado)
    +16 01 El atributo de codificación de los resultados se establece en la página de códigos del cursor.
    +32 10 El atributo de codificación de los resultados se establece en UTF-8, sin conversión de caracteres.
    +48 11 El atributo de codificación de los resultados se establece en UTF-8; los caracteres de doble byte se traducen a UTF-8.

    La tabla siguiente muestra una lista de páginas de código comunes compatibles con Windows.

    Página de códigos Plataforma Atributo de codificación en la declaración XML Comentarios
    932 Windows japonés shift-jis  
    949 Windows coreano iso-2022-kr –o bien–

    ks_c_5601-1987

    950 Windows chino (Taiwan) big5  
    1250 Windows de Europa del Este Windows-1250 tenga en cuenta mayúsculas y minúsculas
    1251 Windows ruso Windows-1251  
    1252 Windows de EE.UU. y Europa Occidental Windows-1252  
    1253 Windows griego Windows-1253  
    1254 Windows turco Windows-1254  
    1255 Windows hebreo Windows-1255  
    1256 Windows árabe Windows-1256  
    437 MS-DOS WINDOWS-1252  
    850 MS-DOS, Int Windows-1252  
    866 MS-DOS, Ruso Windows-1251  
    865 MS-DOS, Nórdico Windows-1252  

    Nota   Cuando se utiliza una codificación basada en páginas de códigos(juegos de caracteres tradicionales de byte único o doble byte de Visual FoxPro), tales como Windows-1252 (código de página 1252) o Big5 (código de página 950), no es necesaria ninguna otra traducción de caracteres para una presentación correcta en Internet Explorer.

    Nota   Cuando la codificación de los resultados se establece en UTF-8, el resultado establecido puede someterse opcionalmente a una traducción de caracteres al formato UTF-8. Cuando no hay atributo de codificación, se asume que el XML es UTF-8, por lo que no es necesario (pero podría ser deseable) agregar el atributo de codificación UTF-8.

    Generalmente, para XML: si hay una marca de orden de byte, el formato es Unicode (LE o BE, según BOM). Si no hay etiqueta de codificación, el formato es UTF-8. Cuando se establece la codificación de resultados en UTF-8 (la opción predeterminada), el conjunto de resultados debe someterse a una traducción de caracteres al formato UTF-8. Cuando no hay atributo de codificación, se asume que el XML es UTF-8, por lo que no es necesario (pero podría ser deseable) agregar el atributo de codificación UTF-8.

  • nRecords
    Especifica el número de registros que se convertirán en resultados XML. Si nRecords es 0 (la opción predeterminada), en los resultados se incluyen todos los registros. Si nRecords es mayor que el número de registros que quedan en la tabla, se incluyen todos los registros restantes.

  • cSchemaName
    Especifica el nombre y la ubicación de la información de esquema para los datos de cFileName.

    cSchemaName Descripción
    "" Especifica que no se producirá ningún esquema.
    "1" Especifica que se producirá un esquema en línea.
    <cSchemaName> Especifica el nombre y la ruta del archivo externo que contendrá el esquema (que tiene como alcance el elemento raíz del XML).

    Si cSchemaName contiene un nombre de archivo, y no se proporciona el parámetro cSchemaLocation o se deja en blanco, el contenido de cSchemaName se escribe en el atributo xsi:schemaLocation o xsi:noNamespaceSchemaLocation en el XML.

    En el código siguiente, Visual FoxPro genera un archivo XML genérico, myxmlfile.xml, a partir de labels.dbf del alias "Labels" y el archivo de esquema mySchema, en la misma carpeta.

    CursorToXML("LABELS", "myXMLFile.xml", 1, 512, 0,  "mySchema.xsd")
    

    Si se especifica "", en lugar de "mySchema", no se produce ningún esquema; si se especifica "1", como en el ejemplo siguiente, se produce un esquema en línea:

    CursorToXML("LABELS", "myXMLFile.xml", 1, 512, 0, "1")
    
  • cSchemaLocation
    Especifica una ubicación opcional donde la aplicación que lee los datos XML debería buscar el archivo de esquema. El contenido de cSchemaLocation se escribe en el atributo xsi:schemaLocation o xsi:noNamespaceSchemaLocation de los datos XML producidos. Utilice este parámetro sólo cuando esté desplegando el esquema en una ubicación distinta a la de los datos XML. cSchemaLocation puede ser una dirección http u otra URL. Deberá copiar el archivo de esquema en la ubicación que especificó en cSchemaLocation.

    Por ejemplo:

       CursorToXML("LABELS", "myXMLFile.xml", 1, 512, 0, ;
           "mySchema.xsd", "https://www.microsoft.com/mySchema.xsd")
    

    producirá datos XML que contienen el atributo siguiente:

       xsi:noNamespaceSchemaLocation=" https://www.microsoft.com/mySchema.xsd"
    

    Si cSchemaName está en blanco, especificar cSchemaLocation hará que se escriban los mismos atributos en los datos XML. Esto le permite señalar a un esquema existente sin recrear el esquema cada vez que se llama a CursorToXML.

  • cNamespace
    Especifica el nombre del archivo xml o el esquema que se va a producir. La cadena vacía, "", es el valor predeterminado.

    Si no se especifica el parámetro cNamespace y el esquema es externo, en el esquema no se escribe ninguna declaración de espacio de nombres. Si no se especifica ningún parámetro cNamespace y el esquema está en línea, el valor de targetNamespace en el esquema se establece en "", la cadena vacía.

    Si se especifica cNameSpace, el atributo targetNamespace se establece en el mismo valor y se agrega al esquema el atributo elementFormDefault="qualified".

Observaciones

El resultado de CursorToXML( ) se adhiere al orden de índice del cursor, SET FIELDS TO, y a las configuraciones de filtro actuales. Esta función no conserva la ubicación del cursor. Después de la llamada, el puntero del registro del cursor informa de EOF si todos los registros se incluyeron ya en los resultados o apuntará al último registro de los resultados de XML si no se incluyeron aún todos los registros.

Si cSchemaName incluye una URL, el esquema se escribe en el directorio actual; debe cargarse en el servidor para permitir el acceso al explorador o el analizador. Los esquemas externos se escriben siempre en la misma ubicación que el archivo XML.

Cuando se utilizan conjuntos de caracteres de un solo byte, la codificación predeterminada, Windows-1252, no necesita ninguna traducción más de caracteres para mostrarse correctamente en Internet Explorer. Tanto Unicode como UTF-8 necesitan que el conjunto de resultados se someta a una traducción de caracteres al formato adecuado y, si se especificó que los resultados se guarden en un archivo, que se escriba en el archivo la BOM (Byte Order Mark) correspondiente Unicode o UTF-8, para designar el tipo de archivo como Unicode o UTF-8.

Vea también

Visual FoxPro y XML | XMLUpdateGram( ) (Función) | XMLTOCURSOR( ) (Función)