c# - 呈现 xml 验证错误

标签 c# xml validation xsd

我正在尝试这样做:我有一个 XML 文件,我想根据 XSD 文件对其进行验证。 到目前为止,上帝...我要做的是显示验证错误所在的所有节点。

例如我有这个 XML 文件:

<people>
   <name>Jonh</name>
   <tel>91991919199191919</tel>
</people>

当我验证此文件时,这将在 tel 节点中出现错误。 我想向我的应用程序的最终用户展示名称,以及 XML 中的错误。

我正在尝试在 C#.NET 中执行此操作。

感谢您的帮助...

最佳答案

此代码根据 XSD 文件验证 XML 文件并返回带有行号的错误。

public static void ValidateXML(Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Schemas.Add("", "yourXSDPath");
    settings.ValidationType = ValidationType.Schema;
    XmlReader reader = XmlReader.Create(stream, settings);
    XmlDocument document = new XmlDocument();
    document.Load(reader);
    ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);
    document.Validate(eventHandler);
    reader.Close();
}

static void ValidationEventHandler(object sender, ValidationEventArgs e)
{}

try
{
    ValidateXML(yourXMLStream);
}

catch (XmlSchemaValidationException ex)
{
    Console.WriteLine(String.Format("Line {0}, position {1}: {2}", ex.Message, ex.LineNumber, ex.LinePosition));
}

关于c# - 呈现 xml 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974559/

相关文章:

c# - 为什么这个 lambda 表达式对构造函数参数有效

c# - GetExpressCheckoutDetails 在 asp.net 中返回 session 过期(10411 错误)(仅在某些计算机上)

c# - 为什么我不能在 C# 中定义不区分大小写的字典?

c# - 有什么办法可以简化这种双重条件从句结构吗?

javascript - 在 Javascript 中获取复杂命名空间下的数据

sql-server - SQL Server 2008 中如何存储 xml 列?

java - 不断验证整数

java - XML Schematron 中的换行符和空格

javascript - 跳过 Sails.js 中的模型验证?

php - 在提交时检查文本框中所需文本的代码