描述有点长,请耐心等待.我想处理并验证一个巨大的XML文件,并记录触发验证错误的节点并继续处理下一个节点.XML文件的简化版本如下所示.
我想要执行的是遇到任何验证错误处理节点'A'或其子节点(XMLException和XmlSchemaValidationException)我想停止处理当前节点记录节点'A'的错误和XML并继续下一步节点'A'.
<Root>
<A id="A1">
<B Name="B1">
<C>
<D Name="ID" >
<E>Test Text 1</E>
</D>
<D Name="text" >
<E>Test Text 1</E>
</D>
</C>
</B>
</A>
<A id="A2">
<B Name="B2">
<C>
<D Name="id" >
<E>Test Text 3</E>
</D>
<D Name="tab1_id" >
<E>Test Text 3</E>
</D>
<D Name="text" >
<E>Test Text 3</E>
</D>
</C>
</B>
</Root>
Run Code Online (Sandbox Code Playgroud)
我目前能够通过使用带有XMLReader的ValidationEventHandler从XmlSchemaValidationException中恢复,这会抛出我在XML Processing代码中处理的Exception.但是在某些情况下,触发XMLException会导致进程终止.
以下代码片段说明了我正在使用的当前结构; 它很混乱,也欢迎代码改进建议.
// Setting up the XMLReader
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Auto;
settings.IgnoreWhitespace = true;
settings.CloseInput = true;
settings.IgnoreComments = true; …
Run Code Online (Sandbox Code Playgroud)