【问题标题】:XSD Schema validateXSD 架构验证
【发布时间】:2012-05-29 19:59:32
【问题描述】:

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

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

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

欢迎提出任何建议。

【问题讨论】:

    标签: xsd xsd-validation


    【解决方案1】:

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

    【讨论】:

    • 谢谢佩特鲁。我的项目中只有一个 XSD,因此 Romil 的解决方案适用于我。感谢您的建议。将来它会为我工作。
    【解决方案2】:

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

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

    第 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));
    

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 2011-06-18
      • 2015-04-20
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      相关资源
      最近更新 更多