В чем разница между этими методами проверки XML? - PullRequest
1 голос
/ 16 апреля 2011

Я пытаюсь проверить XML на соответствие XSD.Я нашел несколько способов сделать это.Эти два хорошо работают при написании всех ошибок, так что для чего предназначено каждое из них?

Классы 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);
}

1 Ответ

2 голосов
/ 16 апреля 2011

Разница между классами XmlReader и XmlDocument.XmlReader потоковое XML и читает его по одному узлу за раз.XmlDocument с другой стороны читает весь XML в память и работает с этим.Так что, как правило, XmlDocument проще в использовании, но не подходит для больших файлов.

Что касается проверки, кажется, что классы сравнимы, поэтому либо выберите тот, который легче использовать длявы (вероятно, XmlDocument) или выберите XmlReader, если ожидаете больших файлов или если важно низкое потребление памяти.

Кроме того, для проверки с помощью XmlReader вам не нужно использовать XmlDocument.Load()как вы, что-то вроде while (reader.Read()) { } должно быть достаточно.

...