Переход с версии 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.