我是c#的新手,我需要编写一个App来验证一个Xml文件。 应用程序运行没有错误。但是Xml不是有效的 这是代码:
public class Program
{
/// <summary>
/// Bool für Valid false or true.
/// </summary>
private static bool isValid;
/// <summary>
/// Validiert eine Xml Datei gegen ein XmlSchema
/// </summary>
/// <param name="args">Args StringArray</param>
private static void Main(string[] args)
{
// Strings der Dateien:
const string xmlfile = @"C:\\temp\dataneu.xml";
const string xsdfile = @"C:\\temp\xsd\OlShopSchnittstelle.xsd";
// Reader settings öffnen, Schema hinzufügen + ValidationType setzen.
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("http://tempuri.org/OLShopSchnittstelle.xsd", xsdfile);
settings.ValidationType = ValidationType.Schema;
// XmlDoc, settings zum neuen XmlReader hinzufügen.
XmlReader reader = XmlReader.Create(xmlfile, settings);
// Neues XmlDoc. mit Reader füllen.
XmlDocument doc = new XmlDocument();
doc.Load(reader);
// Neuer ValidationEventHandler mit settings
settings.ValidationEventHandler += new ValidationEventHandler(Settings_ValidationEventHandler);
// Is Valid auf true, wird bei Fehler auf false gesetzt(EventHandler).
isValid = true;
// Validierung
doc.Validate(Settings_ValidationEventHandler);
// Wenn EventHandler nicht ausgelöst wird bleibt isValid: true.
if (isValid == true)
{
Console.WriteLine("Valid Document");
}
else
{
Console.WriteLine("Invalid Document");
}
Console.ReadLine();
}
/// <summary>
/// Wird bei Fehler der Validierung ausgelöst, setzt isValid auf false.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void Settings_ValidationEventHandler(object sender, ValidationEventArgs e)
{
isValid = false;
Console.WriteLine("Validation Error: {0}", e.Message);
}
}
我在这里做错了我的活动没有打电话?
答案 0 :(得分:2)
您可以取消此代码并设置before
XmlReader.Create
,并致电reader.Read
您还添加了XmlSchemaValidationFlags
var settings = new XmlReaderSettings();
settings.Schemas.Add("http://tempuri.org/OLShopSchnittstelle.xsd", xsdfile);
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler(Settings_ValidationEventHandler);
XmlReader reader = XmlReader.Create(xmlfile, settings);
reader.Read();