Представление xml ошибки проверки

Я пытаюсь сделать это: у Меня есть XML-файл, который я хочу проверить согласно файлу XSD. До сих пор так бог... То, что я должен сделать, присутствует весь узел, где ошибка проверки.

Например, у меня есть этот XML-файл:

<people>
   <name>Jonh</name>
   <tel>91991919199191919</tel>
</people>

Когда я проверю этот файл, это получит ошибку в узле телефона. И я хочу представить имя к заключительному пользователю моего приложения и что не так в XML для этого.

Я - triyng, чтобы сделать это в C#.NET.

Спасибо за справку...

6
задан Brian Agnew 29 December 2009 в 13:08
поделиться

4 ответа

Можно ли использовать .NET 3.5? Если да, то вы можете использовать метод расширения Validate на XDocument и предоставить ValidationEventHandler. Если проверка не прошла успешно, ваш обработчик будет вызван с помощью ValidationEventArgs , который вы можете использовать для поиска места ошибки.

.
2
ответ дан 17 December 2019 в 02:29
поделиться

Ошибки проверки обычно выдаются как XmlSchemaException - вы можете перехватить их и использовать свойство Message, чтобы сообщить об этом пользователю.

.
1
ответ дан 17 December 2019 в 02:29
поделиться

Взгляни на Шематрон. Он отлично подходит для валидации такого рода. В то время как вы CAN проверяете, используя Schema, Schematron просто использует XSL и в результате получается XML документ, содержащий сообщения о проверке, которые вы можете сделать удобными для пользователя

.
0
ответ дан 17 December 2019 в 02:29
поделиться

Этот код проверяет XML файл на соответствие XSD файлу и возвращает ошибку с номером строки.

public static void ValidateXML(Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Schemas.Add("", "yourXSDPath");
    settings.ValidationType = ValidationType.Schema;
    XmlReader reader = XmlReader.Create(stream, settings);
    XmlDocument document = new XmlDocument();
    document.Load(reader);
    ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);
    document.Validate(eventHandler);
    reader.Close();
}

static void ValidationEventHandler(object sender, ValidationEventArgs e)
{}

try
{
    ValidateXML(yourXMLStream);
}

catch (XmlSchemaValidationException ex)
{
    Console.WriteLine(String.Format("Line {0}, position {1}: {2}", ex.Message, ex.LineNumber, ex.LinePosition));
}
3
ответ дан 17 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: