Freigeben über


CURSORTOXML( )-Funktion

Konvertiert den Visual FoxPro-Cursor in XML-Text.

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

Rückgabetypen

Numerisch. Gibt die Anzahl Byte zurück, die in die Datei oder Speichervariable (memvar) geschrieben wurden.

Parameter

  • nWorkArea
    Gibt den Arbeitsbereich der Tabelle an, für die die XML-Zeichenfolge erstellt werden soll. Wenn Sie 0 oder keinen Wert angeben, verwendet Visual FoxPro den aktuellen Arbeitsbereich.

  • cTableAlias
    Gibt den Alias der Tabelle an, für die die XML-Zeichenfolge erstellt werden soll.

  • cOutput
    Gibt den Pfad und Namen der Datei oder den Namen der Speichervariablen an, an die die Ergebnisse gesendet werden. Wenn für nFlags die Ausgabe in die Speichervariable (memvar) festgelegt ist (Standardeinstellung), wird die XML-Datei in die Speichervariable zurückgegeben. Ist die Speichervariable nicht vorhanden, wird sie erstellt. Wenn für nFlags die Ausgabe in eine Datei (512) festgelegt ist und keine Datei vorhanden ist, wird diese erstellt. Ist die Datei bereits vorhanden, wird sie überschrieben. Die Einstellung für SAFETY wird dabei beachtet.

  • nOutputFormat
    Gibt das Ausgabeformat der XML-Zeichenfolge wie in der folgenden Tabelle gezeigt an:

    nOuputFormat Beschreibung
    1 – ELEMENTS Elementbezogene XML-Datei (Standardeinstellung)
    2 – ATTRIBUTES Attributbezogene XML-Datei
    3 – RAW Generische attributbezogene XML-Datei
  • nFlags
    Gibt den Typ des XML-Schemas an, das, entsprechend der folgenden Tabelle, produziert wird:

    nFlag Bit Ausgabebeschreibung
    0 0000 UTF-8-formatierte XML-Datei (Standard)
    1 0001 Nicht formatierte XML-Datei (fortlaufende Zeichenfolgen)
    2 0010 Leere Elemente, die mit öffnenden und schließenden Elementen geschrieben sind (z. B. <cc04><cc04/>)
    4 0100 Beibehaltung von weißem Raum in den Feldern
    8 1000 Memofelder in CDATA-Abschnitten
    16 10000 Ausgabecodierung
    32 100000 Ausgabecodierung
    512 1000000000 cOutput ist der Dateiname. Ist für nFlag der Standardwert 0 festgelegt, wird eine Speichervariable erstellt.

    Anmerkung   Wenn für die Ausgabecodierung UTF-8 (die Standardeinstellung) festgelegt ist, dann enthält die XML-Deklaration kein Attribut vom Typ Encoding= (kein Codierungsattribut = UTF-8).

    Wenn für die Ausgabecodierung die Standardeinstellung der Codepage des Cursors oder der Tabelle festgelegt ist, dann erfolgt die Codierung für das Attribut entsprechend der folgenden Tabelle.

    Anmerkung   Codierungsflags werden durch Kombination von Bit 4 und 5 (0010000) eingestellt.

    Codierungsflag Bit 4 und 5 Beschreibung
    +0 00 Windows 1252 (Standard)
    +16 01 Das Attribut für die Ausgabecodierung wird auf die Codepage des Cursors gesetzt
    +32 10 Das Attribut für die Ausgabecodierung wird auf UTF-8 gesetzt, also keine Zeichenübersetzung
    +48 11 Das Attribut für die Ausgabecodierung wird auf UTF-8 gesetzt; Zeichendaten werden in UTF-8 übersetzt

    In der folgenden Tabelle sind häufig verwendete, mit Windows kompatible Codepages aufgelistet.

    Codepage Plattform Codierungsattribut in XML-Deklaration Kommentar
    932 Japanisches Windows shift-jis  
    949 Koreanisches Windows iso-2022-kr oder:

    ks_c_5601-1987

    950 Chinesisches (Taiwan) Windows big5  
    1250 Osteuropäisches Windows Windows-1250 Klein-/Großschreibung beachten
    1251 Russisches Windows Windows-1251  
    1252 US-, westeuropäisches Windows Windows-1252  
    1253 Griechisches Windows Windows-1253  
    1254 Türkisches Windows Windows-1254  
    1255 Hebräisches Windows Windows-1255  
    1256 Arabisches Windows Windows-1256  
    437 MS-DOS WINDOWS-1252  
    850 MS-DOS, Int. Windows-1252  
    866 MS-DOS, russisch Windows-1251  
    865 MS-DOS, nordisch Windows-1252  

    Anmerkung   Wenn die Codierung auf Basis einer Codepage verwendet wird (traditionelles Visual FoxPro mit Singlebyte- oder Doublebyte-Zeichensätzen), wie z. B. Windows-1252 (Codepage 1252) oder Big5 (Codepage 950), ist für die richtige Anzeige in Internet Explorer keine zusätzliche Zeichenübersetzung erforderlich.

    Anmerkung   Wenn für die Ausgabecodierung UTF-8 festgelegt ist, kann für das Resultset optional die Zeichenübersetzung in das UTF-8-Format erfolgen. Ist kein Codierungsattribut vorhanden, wird davon ausgegangen, dass für XML UTF-8 festgelegt ist. Deshalb ist es nicht erforderlich (es kann jedoch erwünscht sein), das UTF-8-Codierungsattribut hinzuzufügen.

    Im Allgemeinen gilt für XML: Ist eine Bytereihenfolgemarkierung vorhanden, dann ist das Format Unicode (LE oder BE, abhängig von der Reihenfolgemarkierung (BOM - Byte Order Mark)) festgelegt. Ist kein Codierungsattribut vorhanden, dann ist das Format UTF-8 festgelegt. Wenn für die Ausgabecodierung UTF-8 (Standardeinstellung) festgelegt ist, dann muss für das Resultset die Zeichenübersetzung in das UTF-8-Format erfolgen. Ist kein Codierungsattribut vorhanden, wird davon ausgegangen, dass für XML UTF-8 festgelegt ist. Deshalb ist es nicht erforderlich (es kann jedoch erwünscht sein), das UTF-8-Codierungsattribut hinzuzufügen.

  • nRecords
    Gibt die Anzahl der Datensätze an, die in die XML-Datei ausgegeben werden sollen. Wenn für nRecords der Wert 0 (Standardeinstellung) festgelegt ist, werden alle Datensätze ausgegeben. Ist nRecords größer als die Anzahl der in der Tabelle verbleibenden Datensätze, werden alle verbleibenden Datensätze ausgegeben.

  • cSchemaName
    Gibt den Namen und den Speicherort der Schemainformationen für die Daten in cFileName an.

    cSchemaName Beschreibung
    "" Gibt an, dass kein Schema erstellt wird
    "1" Gibt an, dass ein Inline-Schema erstellt wird
    <cSchemaName> Gibt den Namen und den Pfad der externen Datei an, die das Schema enthält (ausgelegt für das Stammelement der XML-Datei)

    Wenn cSchemaName einen Dateinamen enthält und wenn der Parameter cSchemaLocation nicht angegeben wird oder leer ist, dann wird der Inhalt von cSchemaName in der XML-Datei in eines der Attribute xsi:schemaLocation oder xsi:noNamespaceSchemaLocation geschrieben.

    Im folgenden Beispielcode generiert Visual FoxPro aus Labels.dbf im Alias Labels im selben Ordner die generische XML-Datei Myxmlfile.xml sowie die Schemadatei mySchema.

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

    Wenn Sie an Stelle von "mySchema," nur "" angeben, dann wird kein Schema erstellt. Wird "1," angegeben, wie im folgenden Beispiel gezeigt, dann wird ein Inline-Schema erstellt:

    CursorToXML("LABELS", "myXMLFile.xml", 1, 512, 0, "1")
    
  • cSchemaLocation
    Gibt einen optionalen Speicherort an, an dem die Anwendung, die die XML-Daten liest, nach der Schemadatei suchen soll. Der Inhalt von cSchemaLocation wird in eines der Attribute xsi:schemaLocation oder xsi:noNamespaceSchemaLocation der produzierten XML-Daten geschrieben. Verwenden Sie diesen Parameter nur, wenn Sie das Schema nicht an dem Speicherort einrichten, an dem sich die XML-Daten befinden. Bei cSchemaLocation kann es sich um eine HTTP-Adresse oder um einen anderen URI handeln. Sie müssen die Schemadatei an den Speicherort kopieren, den Sie in cSchemaLocation angegeben haben.

    Beispiel:

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

    Damit werden XML-Daten produziert, die das folgende Attribut enthalten:

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

    Wenn cSchemaName leer ist, werden bei Angabe von cSchemaLocation die gleichen Attribute in die XML-Daten geschrieben. So können Sie auf ein vorhandenes Schema verweisen, ohne dass das Schema bei jedem Aufruf von CursorToXML neu erstellt werden muss.

  • cNamespace
    Gibt den Namen der XML-Datei oder des Schemas an, die bzw. das erstellt wird. Der Standardwert ist die leere Zeichenfolge "".

    Wenn Sie den Parameter cNamespace nicht angeben und es sich um ein externes Schema handelt, dann wird in das Schema keine Namespacedeklaration geschrieben. Wenn Sie den Parameter cNamespace nicht angeben und es sich um ein Inline-Schema handelt, dann wird für targetNamespace im Schema die leere Zeichenfolge "" festgelegt.

    Wenn Sie cNameSpace angeben, dann wird für das Attribut targetNamespace der gleiche Wert festgelegt, und das Attribut elementFormDefault="qualified" wird dem Schema hinzugefügt.

Hinweise

Die Ausgabe für CursorToXML( ) entspricht der Indexreihenfolge für den Cursor SET FIELDS TO sowie den aktuellen Filtereinstellungen. Mit dieser Funktion wird die Cursorposition nicht beibehalten. Nach dem Aufruf gibt der Datensatzzeiger EOF aus, oder verweist auf die letzte Datensatzausgabe in XML, wenn nicht alle Datensätze ausgegeben wurden.

Wenn cSchemaName ein URI umfasst, wird das Schema in das aktuelle Verzeichnis geschrieben und muss auf den Server geuploadet werden, so dass der Browser oder Parser darauf zugreifen kann. Ein externes Schema wird immer an den gleichen Speicherort geschrieben wie die XML-Datei.

Wenn Singlebyte-Zeichensätze verwendet werden, dann ist für die Standardcodierung Windows-1252 keine zusätzliche Zeichenübersetzung für die richtige Anzeige in Internet Explorer erforderlich. Für Unicode und UTF-8 ist es erforderlich, dass für das Resultset die Zeichenübersetzung in das entsprechende Format erfolgt, und, wenn die Ausgabe in eine Datei angegeben wurde, dass die entsprechende Reihenfolgemarkierung (BOM - Byte Order Mark) in die Datei geschrieben wird, um den Dateityp als Unicode oder UTF-8 zu kennzeichnen.

Siehe auch

Visual FoxPro und XML | XMLUpdateGram( )-Funktion | XMLTOCURSOR( )-Funktion