.NETでXMLを介してデータをやり取りするWebサービスを構築しています。私が定義したXSDを使用して着信要求のXMLを検証したいと思います。ここでXML検証エラー:要素が宣言されていません
はXSDである:ここでは
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="POSearch">
<xs:sequence minOccurs="0" maxOccurs="10">
<xs:element name="POID" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
はXMLである:ここでは
<POSearch>
<POID>1</POID>
<POID>2</POID>
</POSearch>
は、検証コードは、C#である:
static void Main(string[] args){
XmlSchemaSet iSchemas = new XmlSchemaSet();
iSchemas.Add(string.Empty, @"...xsd file location");
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
settings.Schemas.Add(iSchemas);
XmlReader reader = XmlReader.Create(@"...xml file location", settings);
try {
while(reader.Read())
;
}
catch(Exception ex) {
Console.WriteLine(ex.Message);
}
}
private static void ValidationCallBack(object sender, ValidationEventArgs args) {
if(args.Severity == XmlSeverityType.Warning)
Console.WriteLine("\tWarning: Matching schema not found. No validation occurred." + args.Message);
else
Console.WriteLine("\tValidation error: " + args.Message);
}
私はこの作業を持っていたように私は感じます前に、なぜこれが今働いていないのか完全にわからない。私がこれを実行するたびに、次の例外メッセージが表示されます。
Validation error: The 'POSearch' element is not declared.
XSDの定義が間違っていますか?検証コードが間違っていますか?要素はすべて明確に存在します。正しい方向で私を指す助けがあれば、大変感謝しています。
おかげ
は、要素宣言を追加します。私はこれ以上私の髪を引っ張ってきました。私はXSDの新機能です – mac