我创建了一个类来验证一些XML。在那个课程中,我有一个验证方法。我还有一个包含我的XML模式的.xsd文件。我被告知要使用此文件我必须“将xsd文件加载到字符串中”
如何将xsd文件加载到字符串中?
答案 0 :(得分:3)
如果没有更多的上下文,我不知道Load the xsd file into a string
实际意味着什么,但有更简单的方法来验证XML。
var xDoc = XDocument.Load(xmlPath);
var set = new XmlSchemaSet();
using (var stream = new StreamReader(xsdPath))
{
// the null here is a validation call back for the XSD itself, unless you
// specifically want to handle XSD validation errors, I just pass a null and let
// an exception get thrown as there usually isn't much you can do with an error in
// the XSD itself
set.Add(XmlSchema.Read(stream, null));
}
xDoc.Validate(set, ValidationCallBack);
然后你只需要在你的类中使用一个名为ValidationCallBack
的方法作为任何验证失败的处理程序(你可以根据需要命名它,但委托参数上面的Validate()
方法必须引用它法):
public void ValidationCallBack(object sender, ValidationEventArgs e)
{
// do something with any errors
}
答案 1 :(得分:2)
您可以尝试使用此代码
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("....", "youXsd.xsd");
settings.ValidationType = ValidationType.Schema;
settings.ValidationEventHandler += new ValidationEventHandler(YourSettingsValidationEventHandler);
XmlReader books = XmlReader.Create("YouFile.xml", settings);
while (books.Read()) { }
//Your validation
static void YourSettingsValidationEventHandler(object sender, ValidationEventArgs e)
{
}
2如果您只想加载,可以使用StreamReader和ReadToEnd
答案 2 :(得分:0)
将整个文件读成字符串非常容易:
string schema;
using(StreamReader file = new StreamReader(path)
{
schema = file.ReadToEnd();
}
希望这可以帮助您完成任务。