XML-XSD in einer cs-Datei validieren

dila71

Mitglied
hallo,

ich möchte ein XML-Dokument mit einem festen XSD-Dokument gleichen Namens validieren. Dabei soll die im XML angegebene XSD-Datei ignoriert werden.

Bisher versuche ich das folgende:
_xmlFilepath = Pfad zur XML-Datei
_schemapath = Pfad zur XSD Datei

Code:
XmlValidatingReader validator = new XmlValidatingReader( new XmlTextReader( _xmlFilepath ) );
			
//Schema collection zum uberprufen XML Datei
XmlSchemaCollection schemaCol = new XmlSchemaCollection();
//schema bestimmen
schemaCol.Add( null, new XmlTextReader( _schemapath ));
validator.ValidationType = ValidationType.Schema;
validator.Schemas.Add( schemaCol );
 try
{
	while( validator.Read() );
	return true;
}
catch
        return false
Leider kommt auch bei einem File, dessen Elementlängen weit über den MaxLengths der Elemente Liegen immer true raus.


Kann mir jemand sagen, wo mein Fehler ist?


Tschau und Danke
Dirk
 
Hallo,
ich habe ebenfalls einmal vor dem Problem der Validierung einer Xml Datei anhand einer XSD Datei gestanden.
Hier ist meine Version für .Net 2.0
Code:
public class SchemaValidator
    {
        private bool isValid = true;
        private String xsdfilename;

        public SchemaValidator(String filename)
        {
           xsdfilename = filename;
        }

        public bool Validate(string filename)
        {
            isValid = true;

            XmlReaderSettings settings = new XmlReaderSettings();

            settings.Schemas.Add(null, xsdfilename);
            settings.ValidationType = ValidationType.Schema;
            settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
            settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings;

            XmlReader reader = XmlReader.Create(filename, settings);

            try
            {
                while (reader.Read()) ;
            }
            catch
            {
                isValid = false;
            }

            reader.Close();

            return isValid;
        }

        private void ValidationCallBack(object sender, ValidationEventArgs e)
        {
            isValid = false;
        }
    }

mfg,

Jens
 
Danke für die Antwort.
Leider muss ich mit 1.1 arbeiten. Ich werde morgen mal probieren, ob es auch unter 1.1 so funktioniert.
Ich werde dann die Ergebnisse berichten.


Edit:
Leider scheint der XmlReaderSettings eine Neuerung des .Net 2.0 zu sein.
Ich wäre also zu hinweisen für 1.1 dankbar

Tschau
Dirk
 
Zuletzt bearbeitet:
Ja ist für .Net 2.0, da XmlValidatingReader als obsolete gesetzt wurde.
Hier ist ein Link zur MSDN mit dem entsprechenden Beispiel für 1.1
MSDN

mfg Jens
 

Neue Beiträge

Zurück