昨天一个XSD的问题,没有人知道答案。今天最后100分,还是这个问题。如果仍然没有人知道,以后就不来CSDN了。
<tgyszl>
<cEnterpriseCode> 4-00284-00284-00284-00284-00284-00284-0028 </cEnterpriseCode>
<ID> 1792 </ID>
<gys_syrq> 2007-04-29 00:00:00 </gys_syrq>
<gys_mc> 台州市海康医药有限公司 </gys_mc>
<gys_xkzhm> 浙AA1015160 </gys_xkzhm>
<gys_xkzxq> 2009-12-08 00:00:00 </gys_xkzxq>
.......
</tgyszl>
XSD文件如下:
<xs:complexType>
<xs:sequence>
<xs:element name= "cEnterpriseCode " >
<xs:simpleType>
<xs:restriction base= "xs:string ">
<xs:minLength value= "0 "/>
<xs:maxLength value= "10 "/> </xs:restriction>
</xs:simpleType>
</xs:element>
.......
大家注意没有cEnterpriseCode字段远远超过了10个长度。但我用如下的程序去检测。
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string xmlPath = Server.MapPath( "ZTCClient.xml ");
string xsdPath = Server.MapPath( "ZTCClient.xsd ");
XmlTextReader reader = new XmlTextReader(xmlPath);
XmlValidatingReader vr = new XmlValidatingReader(reader);
vr.ValidationEventHandler += new ValidationEventHandler(this.ValidateErrorDetail);
vr.ValidationType = ValidationType.Schema;
vr.Schemas.Add(null,xsdPath);
while (reader.Read())
{
}
reader.Close();
if (builder.ToString() == String.Empty)
Response.Write( "Validation completed successfully. ");
else
Response.Write( "Validation Failed. <br/> " + builder.ToString());
}
void ValidateErrorDetail(object sender,ValidationEventArgs args)
{
builder.Append( "Validation error: " + args.Message + " <br/> ");
}
检测不到任何不合法的东西发生。怎么会这样?这样的XML文件应该是不满足XSD定义要求的啊。
------解决方案--------------------路过,不懂,只能帮顶了
------解决方案--------------------不懂
学习
------解决方案--------------------帮顶
------解决方案--------------------不懂,楼主涉及的技术层面超出俺的接触范围了。
请楼主在google上查找相关技术!
------解决方案--------------------帮顶,也许你的东西放错了地方,你确定是这个区吗?
------解决方案--------------------XML文件的xmlns属性是不是设置了?
------解决方案--------------------