#region
|
|
using System.Data;
|
using System.Reflection;
|
using System.Xml;
|
using System.Xml.Schema;
|
|
#endregion
|
|
namespace CSFrameworkV5.Language
|
{
|
public class SafeXMLReader
|
{
|
public static DataTable LoadFromAssembly(Assembly asm,
|
string asmXmlName, string xsdFile)
|
{
|
var tmp = new DataTable("lan");
|
tmp.Columns.Add("ObjectID", typeof(string));
|
tmp.Columns.Add("Content", typeof(string));
|
tmp.WriteXmlSchema(xsdFile); //保存XSD文件
|
|
// New Validation Xml.
|
var xsd = new XmlSchema();
|
xsd.SourceUri = xsdFile;
|
|
var schemaSet = new XmlSchemaSet();
|
schemaSet.ValidationEventHandler += ValidationEventCallBack;
|
schemaSet.Add(xsd);
|
|
var settings = new XmlReaderSettings();
|
settings.ValidationType = ValidationType.Schema;
|
settings.DtdProcessing = DtdProcessing.Prohibit;
|
settings.XmlResolver = null;
|
settings.Schemas.Add(schemaSet);
|
settings.Schemas.Compile();
|
settings.ValidationEventHandler += ValidationEventCallBack;
|
|
using (var stm1 = asm.GetManifestResourceStream(asmXmlName))
|
{
|
using (var reader = XmlReader.Create(stm1, settings))
|
{
|
tmp.ReadXml(reader);
|
}
|
|
;
|
}
|
|
return tmp;
|
}
|
|
private static void ValidationEventCallBack(object sender,
|
ValidationEventArgs e)
|
{
|
if (e.Severity == XmlSeverityType.Warning) //区分是警告还是错误
|
{
|
//Console.WriteLine("验证成功!警告:" + e.Message);
|
//ErrString += "验证成功!警告:" + e.Message;
|
}
|
// Console.WriteLine("验证失败");
|
//ErrString += "Err:" + e.Message;
|
}
|
}
|
}
|