Announcement

Collapse
No announcement yet.

RecordSet konvertierung zu XML Daten -> auslesen der XML Daten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • RecordSet konvertierung zu XML Daten -> auslesen der XML Daten

    Hallo,

    ich nutze für eine Datenübertragung von einer DB in die Andere ein ADO Recordset. Dieses wird mit der Funktion
    Code:
    function RecordsetToXML(const aRS: Recordset): String;
    
    var
    
      aStrm : Stream;
    
    begin
    
      aStrm := CoStream.Create;
    
      aRS.Save(aStrm, adPersistXML);
    
      Result := aStrm.ReadText(aStrm.Size);
    
      aStrm.Close;
    
    end;
    in einen String konvertiert und als *.xml Datei abgespeichert.

    Wenn man sich die xml Datei anschaut kommt dabei beispielsweise
    HTML Code:
    <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
    	<s:Schema id="RowsetSchema">
    		<s:ElementType name="row" content="eltOnly" rs:updatable="true">
    			<s:AttributeType name="PatID" rs:number="1" rs:nullable="true" rs:maydefer="true" rs:writeunknown="true" rs:basetable="tblPatient" rs:basecolumn="PatID" rs:keycolumn="true">
    				<s:datatype dt:type="uuid" dt:maxLength="16" rs:fixedlength="true"/>
    			</s:AttributeType>
    			<s:AttributeType name="PatNr" rs:number="2" rs:nullable="true" rs:maydefer="true" rs:writeunknown="true" rs:basetable="tblPatient" rs:basecolumn="PatNr">
    				<s:datatype dt:type="string" dt:maxLength="50"/>
    			</s:AttributeType>
    
    			[....]
    
    			<s:extends type="rs:rowbase"/>
    		</s:ElementType>
    	</s:Schema>
    	<rs:data>
    		<z:row PatID="{12345678-1234-1234-1234-123456789012}" [...]/>
    	</rs:data>
    </xml>
    herraus.

    Die Daten erhalte ich dann wiederrum mit der Funktion
    Code:
    function XMLToRecordset (const XML: string): Recordset;
    
    var
    
      stm: Stream;
    
    begin
    
      Result := CoRecordset.Create;
    
      Result.CursorLocation := adUseClient;
    
      stm := CoStream.Create;
    
      stm.Open(EmptyParam, adModeUnknown,
    
        StreamOpenOptionsEnum(adOpenStreamUnspecified), '', '');
    
      stm.WriteText(XML, stWriteChar);
    
      stm.Position := 0;
    
      Result.Open (stm, EmptyParam, CursorTypeEnum(adOpenUnspecified),
    
        LockTypeEnum(adLockUnspecified), 0);
    
      stm.Close;
    
    end;
    zurück.

    Allerdings ist jetzt meine Frage:
    Gibt es eine Möglichkeit auf die Attribute die im XML Dokument festgelegt sind zuzugreifen? Mir geht es dabei speziell um die Attribute:
    - rs:basecolumn
    - rs:basetable
    - rs:keycolumn
    - <s:datatype dt:type="uuid" ...

    Vielen Dank schonmal für die Hilfe.
    Daniel Auth
Working...
X