从 XML 类 1.1 版迁移

在 .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 类的具体实现,例如 XmlTextReaderXmlNodeReaderXmlValidatingReader 类,但是,我们建议您使用 Create 方法创建 XmlReader 实例。这样,您可以利用 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 版

下面的代码使用 Create 方法创建具有与前面示例中相同配置的 XmlReader 对象。

' 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 版后,将 XmlValidatingReaderXmlSchemaCollection 类标记为了已过时。 应使用 XmlReaderSettings 类来创建验证 XmlReader 对象。 XmlSchemaCollection 类被 XmlSchemaSet 类所取代。

1.1 版

以下代码使用 XmlValidatingReaderXmlSchemaCollection 类验证数据。

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 版

以下代码使用 XmlReaderXmlSchemaSet 类验证数据。

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);
}

有关更多信息,请参见使用 XmlReader 验证 XML 数据用于编译架构的 XmlSchemaSet

XmlWriter 的创建

引入 .NET Framework 2.0 版后,可以使用 XmlWriter 类上的静态 Create 方法创建 XmlWriter 对象。 XmlWriterSettings 对象指定希望所创建的 XmlWriter 支持的功能。

注意注意

尽管 .NET Framework 包括 XmlTextWriter 类,该类是 XmlWriter 类的实现,但是,我们建议您使用 Create 方法创建 XmlWriter 对象。这样,您可以利用 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 版

下面的代码使用 Create 方法创建具有与前面示例中相同配置的 XmlWriter 对象。

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 版

以下代码使用 XslTransform 类执行 XSLT 转换。

' 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 版

以下代码使用 XslCompiledTransform 类执行 XSLT 转换。

' 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 文档和数据