Fragensteller
Problem bei der Erstellung eines SSIS-Packages

Frage
-
Hallo und Guten Morgen,
ich versuche gerade ein SSIS-Paket zu erstellen, welches eine XML einliest und in eine Text-Datei schreibt. Meine Quell-XML ist hierbei wie folgt:
<?xml version="1.0" encoding="utf-16"?> <DataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="ROW"> <xs:complexType> <xs:sequence> <xs:element name="COLUMN" type="xs:short" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <NewDataSet> <ROW diffgr:id="ROW1" msdata:rowOrder="0"> <COLUMN>1</COLUMN> </ROW> <ROW diffgr:id="ROW2" msdata:rowOrder="1"> <COLUMN>2</COLUMN> </ROW> </NewDataSet> </diffgr:diffgram> </DataSet>
starte ich dieses SSIS-Paket nun kommt folgendes:
der Flow läuft durch, es werden jedoch keine Daten gelesen oder ausgegeben.
Was läuft hier falsch?
Alle Antworten
-
Achso. Wenn ich die Quelle XML umbaue und eine separate XSD verwende
data.xml
<?xml version="1.0" encoding="utf-8"?> <NewDataSet> <ROW > <COLUMN>1</COLUMN> </ROW> <ROW > <COLUMN>2</COLUMN> </ROW> </NewDataSet>
schema.xsd
<?xml version="1.0"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="ROW"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="COLUMN" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
kommt ein sauberes Ergebnis
-
Wie ich Deinem anderen Thread mit gleichem Thema/Frage Issue with creation of SSIS package - reading from XML entnehme, hast Du auch Visual Studio zur Verfügung, das "erzählt" Dir per IntelliSense, wie der Datenteil korrekt aufgebaut wird; die erneute Definition der Namesspaces ist z.B. nicht nötig, denn das erfolgt ja schon im Inline XSD:
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Hallo Olaf,
sorry, ich blick es immer noch nicht, bin wahrscheinlich schon zum Teil im Wochenende. Wenn ich die xml wie folgt aufbaue:
<?xml version="1.0" encoding="utf-16"?> <DataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="ROW"> <xs:complexType> <xs:sequence> <xs:element name="COLUMN" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <NewDataSet> <ROW diffgr:id="ROW10" msdata:rowOrder="10"> <COLUMN>VALUE</COLUMN> </ROW> </NewDataSet> </diffgr:diffgram> </DataSet>
kommen 0 records.
Wenn ich die diffgr-Deklaration auskommentiere
<?xml version="1.0" encoding="utf-16"?> <DataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="ROW"> <xs:complexType> <xs:sequence> <xs:element name="COLUMN" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <!-- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> --> <NewDataSet> <ROW diffgr:id="ROW10" msdata:rowOrder="10"> <COLUMN>VALUE</COLUMN> </ROW> </NewDataSet> <!-- </diffgr:diffgram> --> </DataSet>
kommt dieser Fehler
-
Wie schon gesagt, lass im Datenbereich die ganzen Namespaces weg, die sind doch bereits im Inline XSD Definiert.
Eigentlich musst Du nur die 2 separaten Dateien aus Deinem zweiten Post zusammenführen:
<?xml version="1.0" encoding="utf-16"?> <DataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="ROW"> <xs:complexType> <xs:sequence> <xs:element name="COLUMN" type="xs:short" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <NewDataSet> <ROW> <COLUMN>1</COLUMN> </ROW> <ROW > <COLUMN>2</COLUMN> </ROW> </NewDataSet> </DataSet>
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Freitag, 14. Februar 2014 14:21
- Als Antwort vorgeschlagen Ionut DumaModerator Mittwoch, 5. März 2014 12:01
-
Guten Morgen,
in der Tat, so klappt es. Aber: Die XML ist das Ergebnis einer Web Service-Abfrage, also irgendwie muss doch das SSIS-Paket damit klar kommen können. Und auch wenn ich obige XML verwende, kommt zwar kein Fehler, aber auch keine Datensätze...