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


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

В версиях, следующих за .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.

ПримечаниеПримечание

Хотя платформа .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.

ПримечаниеПримечание

Хотя платформа .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-документы и данные