问题是,我不太确定如何。这是尝试使用涉及xmlschemaseset和xmlreader.create的新模板“模仿”以前的验证功能。我首先声明一个架构并使用targeturi字符串对其进行设置,然后在设置验证事件处理程序时将其添加到架构集中。我认为我的问题是设置阅读器和输入流。我知道如何使用xmlvalidating阅读器,但如果我想修复警告,那不是一个选项。这是代码并尝试。测试时,只使用了新的validationxml代码,旧代码被注释掉了。//新验证Xml。stringxsd_file=filename.Substring(0,filename.Length-3)+"xsd";XmlSchemaxsd=newXmlSchema();xsd.SourceUri=xsd_file;XmlSchemaSetss=newXmlSchemaSet();ss.ValidationEventHandler+=newValidationEventHandler(ValidationCallBack);ss.Add(xsd);如果(ss.Count>0){XmlTextReaderr=newXmlTextReader(filename2);XmlReaderSettingssettings=newXmlReaderSettings();settings.ValidationType=ValidationType.Schema;设置.Schemas.Add(ss);settings.ValidationEventHandler+=newValidationEventHandler(ValidationCallBack);XmlReaderreader=XmlReader.Create(filename2,settings);while(reader.Read()){}reader.Close();}//旧的验证XMLXmlSchemaCollectionsc=newXmlSchemaCollection();sc.ValidationEventHandler+=newValidationEventHandler(ValidationCallBack);sc.Add(null,xsd_file);如果(sc.Count>0){XmlTextReaderr=newXmlTextReader(filename2);XmlValidatingReaderv=newXmlValidatingReader(r);v.ValidationType=ValidationType.Schema;v.Schemas.Add(sc);v.ValidationEventHandler+=newValidationEventHandler(ValidationCallBack);while(v.Read()){}v.Close();}privatevoidValidationCallBack(objectsender,ValidationEventArgse){//如果文档验证失败isvalid=false;MessageConsole.Text="无效。检查消息和数据网格视图表。";richTextBox1.Text="文档无效:"+e.Message;}不幸的是,当我运行该程序并尝试验证无效的xml文档时,它给出了一个错误,如:“The'URNLookup'elementisnotdeclared”URNLookup元素是xml文件的根元素。我总是可以回到旧的身份验证方法,但那些警告吓到我了。任何帮助是极大的赞赏。先感谢您!如果我遗漏了任何信息,我将非常乐意提供更多信息。我已经解决了这个问题,它现在可以在没有任何警告的情况下再次运行。在新的验证XML中://新的验证Xml.stringxsd_file=filename.Substring(0,filename.Length-3)+"xsd";XmlSchemaxsd=newXmlSchema();xsd.SourceUri=xsd_file;XmlSchemaSetss=newXmlSchemaSet();ss.ValidationEventHandler+=newValidationEventHandler(ValidationCallBack);ss.Add(null,xsd_file);如果(ss.Count>0){XmlReaderSettings设置=newXmlReaderSettings();settings.ValidationType=ValidationType.Schema;设置。模式。添加(ss);settings.Schemas.Compile();settings.ValidationEventHandler+=newValidationEventHandler(ValidationCallBack);XmlTextReaderr=newXmlTextReader(filename2);using(XmlReaderreader=XmlReader.Create(r,settings)){while(reader.Read()){}}}ss.add更改为具有命名空间和文件字符串。添加了settings.schemas.compile(),并添加了对“using(xmlreaderreader...”)的微不足道的重组。这个页面对我帮助很大:http://msdn.microsoft.com/en-us/library/fe6y1sfe(v=vs.80)。aspx它现在可以工作了。以上就是C#学习教程:如何使用xmlschemaset和xmlreader.create分享xsdschemavalidationxml的全部内容。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
