DataSet Validierung mit einem Schema

05/02/2008 - 14:11 von Attila Krick | Report spam
Hallo,

ich würde gerne wissen wie ich ein DataSet gegen eine Schema validieren
kann.

Ich habe eine typisiertes DS:
meinDS ds = new meinDS();

anschliesend lese ich das Schema:
ds.ReadXmlSchema("Schema.xsd");

und jetzt lese ich die XML-Datei:
ds.ReadXml("Daten.xml");

So und nun wie geht es weiter?

Habe gehoft das beim Laden der Daten Ex. ausgelöst werden.
Es passiert nichts, d.h. die Daten werden gelesen, auch wenn sie nicht dem
Schema entsprechen.

Die Frage nach ds.HasErrors oder ds.Tabeles["x"].HasErrors bringt immer
false.

Was muss ich nich machen?

Evtl. hilft ds.InferXmlSchema aber warum muss ich das Schema nochmal
angeben bzw. was will der zweite Parameter von mir?

Grüße

Attila
 

Lesen sie die antworten

#1 Carl Schaffert
05/02/2008 - 14:49 | Warnen spam
Hallo Attila,


ich würde gerne wissen wie ich ein DataSet gegen eine Schema validieren
kann.



Ein DataSet kannst du nicht gegen ein Schema validieren, auch nicht den
Inhalt eines DataSets.


Ich habe eine typisiertes DS:
meinDS ds = new meinDS();



Zu diesem Zeitpunkt hast du "kein" typisiertes DataSet, sofern es nicht
zuvor entweder in deinem Quellcode von dir codiert wurde oder von einem
Designer erstellt wurde, aber dann brauchst du nicht(wie im Folgenden)
nochmals ein Schema zu laden...


anschliesend lese ich das Schema:
ds.ReadXmlSchema("Schema.xsd");


also... entweder du hast schon ein typisiertes DataSet... oder du machst mit
ReadXmlSchema gerade eins ;-)


und jetzt lese ich die XML-Datei:
ds.ReadXml("Daten.xml");



Diese Methode liest deine Xml-Daten aus einem Xml-File, diese Methode würde
aber auch gleichzeitig, sofern dies nicht im DataSet schon vorhanden ist,
ein Inline-Schema aus deinem Xml-File auslesen und wenn kein Inline-Schema
vorhanden ist würde die Methode ReadXml mittels Infersschema ein Schema aus
deinen Xml-Daten erzeugen... dazu gibst du den entsprechenden XmlReadMode
an.


So und nun wie geht es weiter?

Habe gehoft das beim Laden der Daten Ex. ausgelöst werden.
Es passiert nichts, d.h. die Daten werden gelesen, auch wenn sie nicht dem
Schema entsprechen.



Tja, danach musst du nur mal dein DataSet anschauen ob's auch noch so
aussieht wie du es mit deinem Schema beabsichtigt hattest... das SchemaSet
im DataSet ist quasi aditiv, wenn deine ReadXml-Methode also feststellen
sollte, dass bestimmte Teil nicht in dem Schema (das im DataSet existiert)
vorhanden sind, dann werden diese automatisch hinzugefügt oder gar
korrigiert... die Daten die du mit ReadXml einliest, werden also in jedem
Fall eingelesen.

Das Schema im DataSet ist nicht dazu da um deine Xml-Daten zu validieren,
sondern um die Datenstrukturen und Abhàngigkeiten/Beziehungen im DataSet zu
erzeugen.


Die Frage nach ds.HasErrors oder ds.Tabeles["x"].HasErrors bringt immer
false.

Was muss ich nich machen?

Evtl. hilft ds.InferXmlSchema aber warum muss ich das Schema nochmal
angeben bzw. was will der zweite Parameter von mir?



*schmunzel*... der will gar nichts von dir ;-)

schaue dir das mal an(hab ich gerade auf die Schnelle gefunden):

http://msdn2.microsoft.com/en-us/library/atchhx4f(VS.71).aspx

Ich denke, das erklàrt deine Fragen.

Gruß Carl

Ähnliche fragen