如何获得失败的 xsd 验证的实际对象值
how can I get the actual object value of a failed xsd validation
我使用以下代码根据 xsd 文件验证 xml 文件。
var result = false;
var xml = new XmlDocument();
xml.Load(xmlPath);
xml.Schemas.Add(null, xsdPath);
try
{
xml.Validate(null);
result = true;
}
catch (XmlSchemaValidationException ex)
{
result = false;
_logger.Error($"{ex.Message}");
}
它有效,但我只收到错误消息,我想检索失败的 xml 文件中的实际值。例如,在 xsd 文件中我有这个
<xs:element name="Car" maxOccurs="1" minOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="Volvo|Tesla|Skoda"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
并且 XML 文件在 Car 元素中包含值 Ford。如何检索未通过验证的 "Ford" 值?
我找到了一个方法,我可以在 catch(XmlSchemaValidatorException ex)..
中添加这个
var node = ex.SourceObject as XmlNode;
然后我能够得到包含错误值
的node.InnerText
我使用以下代码根据 xsd 文件验证 xml 文件。
var result = false;
var xml = new XmlDocument();
xml.Load(xmlPath);
xml.Schemas.Add(null, xsdPath);
try
{
xml.Validate(null);
result = true;
}
catch (XmlSchemaValidationException ex)
{
result = false;
_logger.Error($"{ex.Message}");
}
它有效,但我只收到错误消息,我想检索失败的 xml 文件中的实际值。例如,在 xsd 文件中我有这个
<xs:element name="Car" maxOccurs="1" minOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="Volvo|Tesla|Skoda"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
并且 XML 文件在 Car 元素中包含值 Ford。如何检索未通过验证的 "Ford" 值?
我找到了一个方法,我可以在 catch(XmlSchemaValidatorException ex)..
中添加这个var node = ex.SourceObject as XmlNode;
然后我能够得到包含错误值
的node.InnerText