我如何在DNX Core 5.0中根据XSD(独立文档)验证XML ?净5)



我正在移植一些代码到ASP。. NET 5,并希望以DNX Core 5.0为目标。但是,我在定位针对XSD文档验证XML文档所需的类型时遇到了麻烦。

代码如下:

var xsdStream = this.GetType().GetTypeInfo().Assembly.GetManifestResourceStream(xsdPath);
using (XmlReader xsd = XmlReader.Create(xsdStream))
{
    XmlSchemaSet schema = new XmlSchemaSet();
    schema.Add(null, xsd);
    XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
    xmlReaderSettings.ValidationType = ValidationType.Schema;
    xmlReaderSettings.Schemas.Add(schema);
    using (XmlReader xmlReader = XmlReader.Create(xmlPath, xmlReaderSettings))
    {
        try
        {
            while (xmlReader.Read());
        }
        catch (Exception ex)
        {
            throw new Exception(string.Format(Resources.Messages.XmlValidationFailed, xmlPath), ex);
        }
    }
}

如您所见,我只想在出现第一个错误时停止,并抛出一个异常,指出错误是什么。

问题是:

  1. XmlSchemaSet类不存在于System.Xml.Schema命名空间(或我发现的其他任何地方)。
  2. XmlReaderSettings.ValidationTypeXmlReaderSettings.Schemas属性不存在

我检查了MSDN文档,它有一个稍微不同的方法。然而,和之前一样,XmlSchemaSet不存在,XDocument.Validate()也不存在。我也搜索了几个ASP。. NET项目的一个例子,但似乎找不到任何。

DNX Core 5.0中有哪些工具(如果有的话)可以根据XSD验证XML ?如果可能的话,我更愿意使用流来实现这一点,但如果绝对有必要,我将接受一种方法,即立即将整个文档读入内存。

在第一个版本中不支持XSD。当我在推特、帖子、bug或社区中听到他们所做的事情时,就会考虑在以后发布。

ps: Pawel应该回答这个问题并得到学分…但是我们应该结束这个问题

最新更新