私はスキーマを持っている:XMLの検証 - のValidationEventHandler情報
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="address">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
そして、単にXMLファイル(これは一例です):
<address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="address.xsd">
<name>John Smith</name>
<street>109 Abbey Close</street>
<city>Hayes</city>
<country>UK</country>
</address>
私はValidationEventHandler
を使用していますが、私はコードに必要これは何が間違っているクライアントのための明確な情報を持っている。たとえば、長さが4の国の場合、フィールド「国」の長さがMinValue未満であるというエラーが表示されます。
しかし、この例では "5"という意味で "MinValue"を意味するクライアント情報を提供したいと思います。
私はこれを長い間探していましたが、これを見つけることができませんでした。
どうすればいいですか?私が知っているのエラー報告はほとんどカスタマイズできるよう
public static bool Validate(Stream xml, Stream xsd)
{
ClearErrorMessage();
try {
XmlTextReader tr = new XmlTextReader(xsd);
XmlSchemaSet schema = new XmlSchemaSet();
schema.Add(null, tr);
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(schema);
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler(ErrorHandler);
XmlReader reader = XmlReader.Create(xml, settings);
while(reader.Read()) {
}
reader.Close();
if(numErrors > 0)
throw new Exception(msgError);
return true;
}
catch(Exception e) {
msgError = "Validation failed\r\n" + msgError + " " + e.Message;
return false;
}
}
private static void ErrorHandler(object sender, ValidationEventArgs args)
{
msgError = msgError + "\r\n" + args.Message + " " + args.Exception.LineNumber;
numErrors++;
}
ので、あなたがもし旨の検証を配置する必要があります国が最小値よりも小さい場合は、長さ5よりも長い文字列を入力してください。 –
国は例に過ぎません。他にも多くの分野があります。 私はショーが必要です: "Field" country "MinValue = 5よりも長さが短い!これを修正してください! – xThauron
あなたが達成したいことを正確に教えてください。 –