gpt4 book ai didi

c# - 同步 XML 模式验证? .NET 3.5

转载 作者:数据小太阳 更新时间:2023-10-29 01:52:08 27 4
gpt4 key购买 nike

我知道我可以使用如下所示的回调方法根据模式验证 xml,但有没有一种方法可以让我同步执行此操作而不是事件驱动?

我想到的一种方法是设置类成员 bool 标志 IsValidated=false 然后
调用 xml.Validate(ValidationEventHandler)。事件处理程序将在完成后设置 IsValidated=true。同时,进行循环检查,直到标志设置为真,然后继续。

这是针对 .Net 3.5 的。

    public bool ValidateSchema(string xmlPath, string xsdPath)
{
XmlDocument xml = new XmlDocument();
xml.Load(xmlPath);

xml.Schemas.Add(null, xsdPath);

xml.Validate(ValidationEventHandler);
}

好的,我已经做了一个测试,看来 xml.validate 实际上会等到回调完成后才会执行新代码。

在下面的示例中,MessageBox.Show("After Validate");总是在执行 myValidationEventHandler 之后发生。

我还单步调试了代​​码以验证这一点。

所以我想这让我的问题不是问题。

// load etc.
...

xmlValidate(myValidationEventHandler);

MessageBox.Show("After Validate");


private void myValidationEventHandler(object sender, ValidationEventArgs e)
{
for (double i = 0; i < 100000; i++)
{
textBox1.Text = i.ToString();
Application.DoEvents();
}

// do stuff with e
}

最佳答案

您可以为 ValidationEventHandler 指定 null 以使 Validate 方法抛出异常。

    public bool ValidateSchema(string xmlPath, string xsdPath)
{
XmlDocument xml = new XmlDocument();
xml.Load(xmlPath);

xml.Schemas.Add(null, xsdPath);

try
{
xml.Validate(null);
}
catch (XmlSchemaValidationException)
{
return false;
}
return true;
}

关于c# - 同步 XML 模式验证? .NET 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com