现在我们有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));
这不是方法。
答案 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的解析器...然后将其设置为XmlResolver
或XmlReaderSettings
,并在调用XmlReaderSettings
时传入XmlReader.Create
。
答案 2 :(得分:0)
使用:
Stream xsdStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("schema.xsd");