C# 逐个标记验证XML标记
使用.net和C#根据模式验证某些XML时遇到一些问题 我将XmlReaderSettings与ValidationEventHandler一起使用 但是,在遇到XML文件中某个特定级别的第一个错误后,它似乎停止捕获错误,而不是检查同一级别的下一个标记,因此基本上它不会检查XML文件中的每个标记,而是在发现错误时跳过一个级别 我希望从成功完成这种验证的人那里得到一些建议C# 逐个标记验证XML标记,c#,xml,validation,schema,tags,C#,Xml,Validation,Schema,Tags,使用.net和C#根据模式验证某些XML时遇到一些问题 我将XmlReaderSettings与ValidationEventHandler一起使用 但是,在遇到XML文件中某个特定级别的第一个错误后,它似乎停止捕获错误,而不是检查同一级别的下一个标记,因此基本上它不会检查XML文件中的每个标记,而是在发现错误时跳过一个级别 我希望从成功完成这种验证的人那里得到一些建议 非常感谢XMLReader被描述为 提供对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