1

我有一个关于如何使用 XSD Schema 来验证 XML 格式的问题。

我已经成功编程以使用 XSD 模式验证 XML 格式。但是,我需要将 xx.xsd 放在当前项目的主要位置。无论如何将 xsd 模式嵌入到程序集中,这样我就不需要总是将 xxx.xsd 放在可执行程序集的相同位置。我试图将它嵌入到项目的资源中,但是当使用像 resgen xxx.xsd 这样的 VS 命令提示符时,我似乎无法重新生成 XSD 文件。它说此命令不支持扩展名。

有没有其他方法可以解决这个问题。

任何建议表示赞赏。

4

2 回答 2

3

如果您只处理一个 XSD(没有外部引用),那么 @Romil 的答案就是您所需要的。但是,如果您转而使用组件化 XSD(通过 xsd:include/import/redefine 链接的 XSD 集),那么该解决方案将无法正常工作。SO上的这篇文章向您展示了如何正确解决它;您需要构建和使用自己的解析器,它将能够从嵌入式资源中提供这些引用,并且非常重要的是,您需要在以下情况下提供基本 URI(通常是使用某些专有方案的组合 URL)创建第一个阅读器。

于 2012-05-23T11:09:18.423 回答
2

第 1 步:像往常一样将 XSD 添加到您的类库项目中

步骤 2:右键单击 XSD 文件的属性,然后在 Build Action 下选择“Embedded Resource”</p>

第 3 步:修改代码,如下所示

XmlSchemaSet schemaSet = new XmlSchemaSet() ;
schemaSet.Add("", XmlReader.Create(xmlSchema));

TextReader schemaStream =
    new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(xmlSchema));
XmlSchemaSet schemaSet = new XmlSchemaSet() ;
schemaSet.Add("",XmlReader.Create(schemaStream));
于 2012-05-23T09:29:20.233 回答