使用xsd=>;验证XML;删除xml文件中的行时没有错误

本文关键字:文件 有错误 xml 删除 xsd gt XML 验证 使用 | 更新日期: 2023-09-27 18:21:00

我想用xsd验证xml文件。当我放入一个不正确的类型时,它已经起作用了,但当我删除xml文档中的行时,它就不起作用了。这是怎么做到的?

<Test>
    <TestNode1>1</TestNode1>
    <TestNode2>true</TestNode2>
    <TestNode3>true</TestNode3>
    <TestNode4>true</TestNode4>
    <TestNode5>true</TestNode5>
</Test>
<xs:element name="Test">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="TestNode1" type="xs:boolean"/>
      <xs:element name="TestNode2" type="xs:boolean"/>
      <xs:element name="TestNode3" type="xs:boolean"/>
      <xs:element name="TestNode4" type="xs:boolean"/> 
      <xs:element name="TestNode5" type="xs:boolean"/>     
    </xs:sequence>
  </xs:complexType>
</xs:element>

例如,当我删除包含testnode4的行时。。。当我使用这个=>时

XmlReaderSettings xmlSettings = new XmlReaderSettings();
xmlSettings.IgnoreWhitespace = true;
xmlSettings.Schemas = new System.Xml.Schema.XmlSchemaSet();
xmlSettings.Schemas.Add(null, xsdUri);
xmlSettings.ValidationType = ValidationType.Schema;
using (var xmlStream = File.OpenRead(xmlUri))
{
    var xmlFile = XmlReader.Create(xmlStream, xmlSettings);
    while (xmlFile.Read()) { }
}

这是工作,但我不想这样。我想在漏行时出错。

谢谢。

使用xsd=>;验证XML;删除xml文件中的行时没有错误

如您所见http://www.w3schools.com/schema/el_sequence.asp.

sequence元素指定子元素必须出现在一个序列。每个子元素可以出现在0到任意数量的时间。

如果希望元素每次都出现,则必须指定minOccurs属性。