相关疑难解决方法(0)

验证XDocument时捕获架构信息

这类似于这个问题C#在验证xml时获取模式信息

但是,我正在使用XDocument进行LINQ.

我正在读取/解析一组CSV文件并转换为XML,然后根据XSD架构验证XML.

我想捕获与元素值相关的特定错误,生成更加用户友好的消息,并将它们返回给用户,以便可以更正输入数据.我想在输出数据中包含的项目之一是一些架构信息(例如数字类型的可接受值的范围).

在我目前的方法中(我愿意改变),我能够捕获除了架构信息之外我需要的一切.

我已经尝试访问Validation事件处理程序SourceSchemaObjectValidationEventArgs参数,但它始终为null.我也试过过GetSchemaInfoXElement,看起来也是null.

我正在使用RegEx来识别我想要捕获的特定验证错误,并通过验证事件处理程序的sender参数从XElement中获取数据.我曾想过将模式转换为XDocument并通过LINQ获取我需要的东西,但在我看来应该有更好的选择

这是我目前的验证方法:

private List<String> this.validationWarnings;
private XDocument xDoc;
private XmlSchemaSet schemas = new XmlSchemaSet();

public List<String> Validate()
{
    this.validationWarnings = new List<String>();

    // the schema is read elsewhere and added to the schema set
    this.xDoc.Validate(this.schemas, new ValidationEventHandler(ValidationCallBack), true);

    return validationWarnings
}
Run Code Online (Sandbox Code Playgroud)

这是我的回调方法:

private void ValidationCallBack(object sender, ValidationEventArgs args)
{           
    var element = sender as XElement;

    if (element != null)
    {

        // this is a just a placeholder …
Run Code Online (Sandbox Code Playgroud)

c# xml xsd linq-to-xml c#-4.0

6
推荐指数
1
解决办法
4221
查看次数

如何从 C# 中的行号和列号查找 XML 节点?

鉴于以下情况

  • 一个行号
  • 列号
  • XML 文件

(其中行号和列号代表节点的“<”字符)

使用 XDocument API 如何找到该位置的 XNode。

c# xml linq-to-xml

5
推荐指数
1
解决办法
3637
查看次数

标签 统计

c# ×2

linq-to-xml ×2

xml ×2

c#-4.0 ×1

xsd ×1