Главная страница

МУ_ЛР_ЛиПОАС. Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем


Скачать 2.76 Mb.
НазваниеМетодические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем
Дата12.04.2023
Размер2.76 Mb.
Формат файлаdoc
Имя файлаМУ_ЛР_ЛиПОАС.doc
ТипМетодические указания
#1057976
страница23 из 32
1   ...   19   20   21   22   23   24   25   26   ...   32

2.38. Проверка XML-документа в DOM


Метод Validate класса XmlDocument сверяет XML-данные, загружаемые в модель DOM, со схемами, содержащимися в свойстве XmlDocument объекта Schemas. После успешной проверки применяются настройки схемы по умолчанию, текстовые значения по необходимости преобразуются в атомарные, а сведения о типах ассоциируются с проверенными информационными элементами. В результате типизированные XML-данные заменяют ранее не типизированные XML-данные.

Публикуемый ниже пример аналогичен примеру, приведенному ранее в подразделе «Проверка XML-документа в процессе его загрузки в модель DOM». В этом примере XML-документ проверяется не в процессе загрузки в модель DOM, а по завершении данного процесса. При этом используется метод Validate класса XmlDocument. Метод Validate сверяет XML-документ со схемами XML, содержащимися в свойстве Schemas объекта XmlDocument. Затем в XML-документ вносятся недействительные изменения; документ вновь подвергается проверке, что приводит к появлению ошибок проверки схемы. Наконец, одна из ошибок исправляется, после чего часть XML-документа подвергается частичной проверке.

C#

using System;

using System.Xml;

using System.Xml.Schema;
class XmlDocumentValidationExample

{

static void Main(string[] args)

{

try

{

// Create a new XmlDocument instance and load

// the XML document into the DOM.

XmlDocument document = new XmlDocument();

document.Load("contosoBooks.xml");
// Add the XML schema for the XML document to the

// Schemas property of the XmlDocument.

document.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
// Validate the XML document loaded into the DOM.

document.Validate(ValidationEventHandler);
// Make an invalid change to the first and last

// price elements in the XML document, and write

// the XmlSchemaInfo values assigned to the price

// element during validation to the console.

XmlNamespaceManager manager = new XmlNamespaceManager(document.NameTable);

manager.AddNamespace("bk", "http://www.contoso.com/books");
XmlNode priceNode = document.SelectSingleNode(@"/bk:bookstore/bk:book/bk:price", manager);
Console.WriteLine("SchemaInfo.IsDefault: {0}", priceNode.SchemaInfo.IsDefault);

Console.WriteLine("SchemaInfo.IsNil: {0}", priceNode.SchemaInfo.IsNil);

Console.WriteLine("SchemaInfo.SchemaElement: {0}", priceNode.SchemaInfo.SchemaElement);

Console.WriteLine("SchemaInfo.SchemaType: {0}", priceNode.SchemaInfo.SchemaType);

Console.WriteLine("SchemaInfo.Validity: {0}", priceNode.SchemaInfo.Validity);
priceNode.InnerXml = "A";
XmlNodeList priceNodes = document.SelectNodes(@"/bk:bookstore/bk:book/bk:price", manager);

XmlNode lastprice = priceNodes[priceNodes.Count - 1];
lastprice.InnerXml = "B";
// Validate the XML document with the invalid changes.

// The invalid changes cause schema validation errors.

document.Validate(ValidationEventHandler);
// Correct the invalid change to the first price element.

priceNode.InnerXml = "8.99";
// Validate only the first book element. The last book

// element is invalid, but not included in validation.

XmlNode bookNode = document.SelectSingleNode(@"/bk:bookstore/bk:book", manager);

document.Validate(ValidationEventHandler, bookNode);

}

catch (XmlException ex)

{

Console.WriteLine("XmlDocumentValidationExample.XmlException: {0}", ex.Message);

}

catch(XmlSchemaValidationException ex)

{

Console.WriteLine("XmlDocumentValidationExample.XmlSchemaValidationException: {0}", ex.Message);

}

catch (Exception ex)

{

Console.WriteLine("XmlDocumentValidationExample.Exception: {0}", ex.Message);

}

}
static void ValidationEventHandler(object sender, System.Xml.Schema.ValidationEventArgs args)

{

if (args.Severity == XmlSeverityType.Warning)

Console.Write("\nWARNING: ");

else if (args.Severity == XmlSeverityType.Error)

Console.Write("\nERROR: ");
Console.WriteLine(args.Message);

}

}

В этом примере в качестве входных данных используются файлы contosoBooks.xml и contosoBooks.xsd, упоминавшиеся ранее в подразделе «Проверка XML-документа в процессе его загрузки в модель DOM».
1   ...   19   20   21   22   23   24   25   26   ...   32


написать администратору сайта