Поделиться через


Переход с версии 1.1 классов XML

Обновлен: November 2007

В версиях, следующих за .NET Framework 1.1, в XML-классы внесено много обновлений. Чтобы полностью реализовать преимущества новых функций, может потребоваться перевод существующего кода на новые API-интерфейсы. В разделах данного документа описываются изменения в существующих API-интерфейсах, которые требуют обновления существующего кода.

Платформа Microsoft .NET Framework версии 3.5 включает новые параметры для обработки XML-данных. Дополнительные сведения об этих параметрах см. в разделе LINQ to XML.

Создание XmlReader

С появлением .NET Framework версии 2.0 объекты XmlReader создаются с помощью статического метода Create класса XmlReader. Объект XmlReaderSettings указывает возможности, которые должен поддерживать созданный XmlReader.

534aacaa.alert_note(ru-ru,VS.90).gifПримечание.

Хотя платформа .NET Framework располагает конкретными реализациями класса XmlReader, такими как классы XmlTextReader, XmlNodeReader и XmlValidatingReader, рекомендуется создавать экземпляры XmlReader с использованием метода Create. Это позволяет получить преимущества от всех новых функций, добавленных к классу XmlReader.

Версия 1.1

Следующий код создает объект XmlTextReader, который не обрабатывает пробел и использует объект XmlUrlResolver для разрешения URI имени файла.

' Supply the credentials necessary to access the Web server.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Create the XmlTextReader.
Dim reader As New XmlTextReader("https://serverName/data/books.xml")
reader.WhitespaceHandling = WhitespaceHandling.None
reader.XmlResolver = resolver
// Supply the credentials necessary to access the Web server.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Create the XmlTextReader.
XmlTextReader reader = new XmlTextReader("https://serverName/data/books.xml");
reader.WhitespaceHandling = WhitespaceHandling.None;
reader.XmlResolver = resolver;

Версия 2.0

Следующий код создает объект XmlReader с такой же конфигурацией, что и в предыдущем примере, используя метод Create.

' Supply the credentials necessary to access the Web server.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Create the XmlReader.
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
settings.XmlResolver = resolver
Dim reader As XmlReader = XmlReader.Create("https://serverName/data/books.xml", settings)
// Supply the credentials necessary to access the Web server.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Create the XmlReader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
settings.XmlResolver = resolver;
XmlReader reader = XmlReader.Create("https://serverName/data/books.xml", settings);

Дополнительные сведения см. в разделе Создание средств чтения XML.

Проверка XML

Начиная с версии .NET Framework 2.0, классы XmlValidatingReader и XmlSchemaCollection являются устаревшими. Вместо них следует использовать класс XmlReaderSettings для создания проверяющего объекта XmlReader. Класс XmlSchemaCollection заменен классом XmlSchemaSet.

Версия 1.1

Следующий код выполняет проверку данных с помощью классов XmlValidatingReader и XmlSchemaCollection.

Dim reader As New XmlValidatingReader(New XmlTextReader("books.xml"))
reader.ValidationType = ValidationType.Schema
reader.Schemas.Add("urn:books", "books.xsd")
AddHandler reader.ValidationEventHandler, AddressOf ValidationCallBack
While reader.Read()
End While
XmlValidatingReader reader = new XmlValidatingReader(new XmlTextReader("books.xml"));
reader.ValidationType = ValidationType.Schema;
reader.Schemas.Add("urn:books", "books.xsd");
reader.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
while (reader.Read());
Private Shared Sub ValidationCallBack(ByVal sender As Object, ByVal e As ValidationEventArgs) 
  Console.WriteLine("Validation Error: {0}", e.Message)  
End Sub 'ValidationCallBack
private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
}

Версия 2.0

Следующий код выполняет проверку данных с помощью классов XmlReader и XmlSchemaSet.

Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:books", "books.xsd")
AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
While reader.Read()
End While
XmlReaderSettings settings = new XmlReaderSettings();
settings. ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:books", "books.xsd");
settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
XmlReader reader = XmlReader.Create("books.xml",settings);
while (reader.Read());
Private Shared Sub ValidationCallBack1(ByVal sender As Object, ByVal e As ValidationEventArgs) 
  Console.WriteLine("Validation Error: {0}", e.Message)  
End Sub 'ValidationCallBack1
private static void ValidationCallBack1(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
}

Дополнительные сведения см. в разделах Проверка XML-данных с помощью XmlReader и XmlSchemaSet для компиляции схемы.

Создание XmlWriter

С появлением .NET Framework версии 2.0 объекты XmlWriter создаются с помощью статического метода Create класса XmlWriter. Объект XmlWriterSettings указывает возможности, которые должен поддерживать созданный XmlWriter.

534aacaa.alert_note(ru-ru,VS.90).gifПримечание.

Хотя платформа .NET Framework включает класс XmlTextWriter, который является реализацией класса XmlWriter, рекомендуется создавать объекты XmlWriter с использованием метода Create. Это позволяет получить преимущества от всех новых функций, добавленных к классу XmlWriter.

Версия 1.1

В следующем фрагменте исходного текста создается объект XmlTextWriter в конкретной кодировке.

Dim writer As New XmlTextWriter("books.xml", Encoding.Unicode)
writer.Formatting = Formatting.Indented
XmlTextWriter writer = new XmlTextWriter("books.xml", Encoding.Unicode);
writer.Formatting = Formatting.Indented;

Версия 2.0

Следующий код создает объект XmlWriter с такой же конфигурацией, что и в предыдущем примере, используя метод Create.

Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.Encoding = Encoding.Unicode
Dim writer As XmlWriter = XmlWriter.Create("books.xml", settings)
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = Encoding.Unicode;
XmlWriter writer = XmlWriter.Create("books.xml", settings);

Дополнительные сведения см. в разделе Создание модуля записи XML.

Обработка XSLT

Класс XslCompiledTransform является новым обработчиком XSLT и заменяет класс XslTransform. Перечисление XsltSettings используется для активации дополнительных настроек XSLT, таких как поддержка внедренных сценариев или функции XSLT document().

Версия 1.1

Следующий код выполняет XSLT-преобразование с помощью класса XslTransform.

' Create the XslTransform.
Dim xslt As New XslTransform()

' Create a resolver and set the credentials to use.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", resolver)

' Transform the file.
Dim doc As New XPathDocument(filename)
Dim writer As New XmlTextWriter("output.xml", Nothing)
xslt.Transform(doc, Nothing, writer, Nothing)
// Create the XslTransform.
XslTransform xslt = new XslTransform();

// Create a resolver and set the credentials to use.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", resolver);

// Transform the file.
XPathDocument doc = new XPathDocument(filename);
XmlTextWriter writer = new XmlTextWriter("output.xml", null);
xslt.Transform(doc, null, writer, null);

Версия 2.0

Следующий код выполняет XSLT-преобразование с помощью класса XslCompiledTransform.

' Create the XslCompiledTransform object.
Dim xslt As New XslCompiledTransform()

' Create a resolver and set the credentials to use.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", XsltSettings.Default, resolver)

' Transform the file.
Dim writer As XmlWriter = XmlWriter.Create("output.xml")
xslt.Transform("books.xml", writer)
// Create the XslCompiledTransform object.
XslCompiledTransform xslt = new XslCompiledTransform();

// Create a resolver and set the credentials to use.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", XsltSettings.Default, resolver);

// Transform the file.
XmlWriter writer = XmlWriter.Create("output.xml");
xslt.Transform("books.xml", writer);

Дополнительные сведения см. в разделе Миграция с класса XslTransform.

См. также

Другие ресурсы

XML-документы и данные