Hallo,
ich nutze für eine Datenübertragung von einer DB in die Andere ein ADO Recordset. Dieses wird mit der Funktion
in einen String konvertiert und als *.xml Datei abgespeichert.
Wenn man sich die xml Datei anschaut kommt dabei beispielsweise
herraus.
Die Daten erhalte ich dann wiederrum mit der Funktion
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
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;
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>
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;
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