C# 逐个标记验证XML标记

C# 逐个标记验证XML标记,c#,xml,validation,schema,tags,C#,Xml,Validation,Schema,Tags,使用.net和C#根据模式验证某些XML时遇到一些问题 我将XmlReaderSettings与ValidationEventHandler一起使用 但是,在遇到XML文件中某个特定级别的第一个错误后,它似乎停止捕获错误,而不是检查同一级别的下一个标记,因此基本上它不会检查XML文件中的每个标记,而是在发现错误时跳过一个级别 我希望从成功完成这种验证的人那里得到一些建议 非常感谢XMLReader被描述为 提供对XML数据的快速、非缓存、仅转发访问的读取器 根据您对应用程序行为的描述,听起来像是

使用.net和C#根据模式验证某些XML时遇到一些问题

我将XmlReaderSettings与ValidationEventHandler一起使用

但是,在遇到XML文件中某个特定级别的第一个错误后,它似乎停止捕获错误,而不是检查同一级别的下一个标记,因此基本上它不会检查XML文件中的每个标记,而是在发现错误时跳过一个级别

我希望从成功完成这种验证的人那里得到一些建议


非常感谢

XMLReader被描述为

提供对XML数据的快速、非缓存、仅转发访问的读取器

根据您对应用程序行为的描述,听起来像是抛出了异常,并且定义了某种形式的验证回调方法,该方法执行一些非致命的操作(如记录警告),然后将控制权返回给位于违规元素上方一级的验证器


顺便说一下:xml元素被称为“元素”,而不是“标记”

这听起来像是在模式中定义了
xsd:sequence
,当文档中的元素顺序与模式中定义的元素顺序不匹配时,就会发生错误

鉴于此模式:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema 
    attributeFormDefault="unqualified" 
    elementFormDefault="qualified" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="Dog">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Age" type="xsd:int"/>
                <xsd:element name="Name" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

但您只看到第一个错误。这是因为无效子元素的第一个错误使得
XmlReader
无法解析文档的其余部分,因为它不再知道接下来会发生什么。

您如何处理ValidationEvent?我们能看一些代码吗?嗨,谢谢你的回复!1.XML有效,但根据架构无效。2.此机器上没有代码,因为它正在工作,但将尽快使用特定代码进行更新!
<Dog>
    <Name>Rex</Name>
    <Age>three</Age>
</Dog>
1. The element 'Dog' has invalid child element 'Name'.
2. The 'Age' element is invalid - The value 'three' is invalid according to its datatype