【问题标题】:how can I get the actual object value of a failed xsd validation如何获取失败的 xsd 验证的实际对象值
【发布时间】:2019-08-29 09:33:21
【问题描述】:

我使用以下代码根据 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。如何检索未通过验证的“福特”值?

【问题讨论】:

    标签: c# xml xsd xml-validation


    【解决方案1】:

    我找到了一种方法,我可以在 catch(XmlSchemaValidatorException ex) 中添加它..

    var node = ex.SourceObject as XmlNode;

    然后我可以得到包含错误值的 node.InnerText

    【讨论】:

    • 不要忘记使用绿色勾号将您的答案标记为答案。
    猜你喜欢
    • 2013-12-22
    • 1970-01-01
    • 2019-05-18
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多