在C#中嵌入xsd文件

时间:2009-12-10 12:30:23

标签: c# xml xsd

现在我们有XML模式文件的静态代码。但现在我们要嵌入该文件

现在代码:

XmlTextReader reader = new XmlTextReader("schema.xsd");
XmlSchema schema = XMLSchema.Read(xReader, new ValidationEventHandler(ValidationEventHandler));

但现在我想将它嵌入Resouce文件中。那我该怎么做。

XmlTextReader reader = new XmlTextReader(Resouces.Schema);
XmlSchema schema = XMLSchema.Read(xReader, new ValidationEventHandler(ValidationEventHandler));

这不是方法。

3 个答案:

答案 0 :(得分:5)

// Get the assembly that contains the embedded schema
var assembly = Assembly.GetExecutingAssembly();
using (var stream = assembly.GetManifestResourceStream("namespace.schema.xsd"))
using (var reader = XmlReader.Create(stream))
{
    XmlSchema schema = XMLSchema.Read(
        reader, 
        new ValidationEventHandler(ValidationEventHandler));
}

答案 1 :(得分:1)

如果您有一个文件,只需将其解压缩(GetManifestResourceStream)并直接使用即可。如果您有多个相关文件,则需要编写XmlResolver。我在某个地方有一个基于resx的解析器...然后将其设置为XmlResolverXmlReaderSettings,并在调用XmlReaderSettings时传入XmlReader.Create

答案 2 :(得分:0)

使用:

Stream xsdStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("schema.xsd");