2

私はこのコードを持っています:

  // Load the document
  XmlDocument xmlDocument = new XmlDocument();

  // use the stream and have it close when it is finished
  using ( argInputStream )
  {
    xmlDocument.Load( argInputStream );
    xmlDocument.Schemas.Add( XmlSchema.Read( argSchemaStream, null ) );
    xmlDocument.Validate( ValidationEventHandler );
  }

// this is not getting hit
void ValidationEventHandler( object sender, ValidationEventArgs e )
{
  switch ( e.Severity )
  {
    case XmlSeverityType.Error:
      Console.WriteLine( "Error: {0}", e.Message );
      break;
    case XmlSeverityType.Warning:
      Console.WriteLine( "Warning {0}", e.Message );
      break;
  }
}

私のXSDの一番上の行:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">

何か案は?

4

2 に答える 2

3

この構造を使用して xml を検証するコードがいくつかあります。

var schemaReader = new XmlTextReader(argSchemaStream);
var schema = new XmlSchemaSet();
schema.Add(null, schemaReader);

var settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(schema);
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);

var doc = new XmlDocument();
doc.Load(XmlReader.Create(argInputStream, settings));
于 2012-06-05T19:07:24.793 に答える
0

それが正しい検証方法だとは思いません。このMSDN リンクを試してください。基本的に、スキーマは代わりに XmlReaderSettings を使用しているようです。

XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add(...);
settings.ValidationType = ValidationType.Schema;

XmlReader reader = XmlReader.Create(..., settings);
XmlDocument document = new XmlDocument();
document.Load(reader);

document.Validate(eventHandler);
于 2012-06-05T19:03:13.033 に答える