【问题标题】:What is the differece between these XML validation methods?这些 XML 验证方法有什么区别?
【发布时间】:2011-04-16 10:03:29
【问题描述】:

我尝试针对 XSD 验证 XML。我找到了几种方法来做到这一点。这两个很好地编写了所有错误,那么每个错误的用途是什么?

XmlDocument 和 XmlSchema 类

XmlDocument document = new XmlDocument();
document.Load(xmlFilePath);    
document.Schemas.Add(@namespace,schemaFilePath);
document.Validate(ValidationHandler);
-----    
public void ValidationHandler(object sender, ValidationEventArgs e)
{
  Console.WriteLine(e.Message);
}

XmlReaderSettings 类

在这里我可以进行一些设置,并在 Load() 执行时进行验证。

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationEventHandler += new ValidationEventHandler(ValidationHandler);
settings.Schemas.Add(@namespace, schemaFilePath));
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(xmlFilePath, settings);
document.Load(reader);
reader.Close();
-----
public void ValidationHandler(object sender, ValidationEventArgs e)
{
  Console.WriteLine(e.Message);
}

【问题讨论】:

    标签: .net xsd xml-validation


    【解决方案1】:

    区别在于XmlReaderXmlDocument 类。 XmlReader 流式传输 XML 并一次读取一个节点。另一方面,XmlDocument 将整个 XML 读入内存并使用它。所以,一般来说,XmlDocument 更容易使用,但不适合大文件。

    就验证而言,这些类似乎具有可比性,因此要么选择更易于使用的类(可能是XmlDocument),要么选择XmlReader,如果您期望大文件或低内存消耗很重要。

    另外,要使用XmlReader 进行验证,您不需要像现在这样使用XmlDocument.Load()while (reader.Read()) { } 之类的就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2018-04-29
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多