XML クラス バージョン 1.1 からの移行
更新 : November 2007
.NET Framework 1.1 以降、XML クラスには数多くの更新が加えられています。新しい機能を最大限に活用するためには、既存のコードの新しい API への変更が必要な場合があります。ここでは、既存の API に加えられた変更について説明します。これにより、既存のコードのアップグレードが必要になる場合があります。
Microsoft .NET Framework 3.5 には、XML データの処理を目的とした新しいオプションが加えられています。これらのオプションの詳細については、「LINQ to XML」を参照してください。
XmlReader の作成
.NET Framework 2.0 の導入に伴い、XmlReader オブジェクトは XmlReader クラスの静的メソッド Create を使用して作成されます。XmlReaderSettings オブジェクトは、作成される XmlReader でサポートする機能を指定します。
メモ : |
---|
.NET Framework には、XmlTextReader クラス、XmlNodeReader クラス、XmlValidatingReader クラスなど、XmlReader クラスの具象実装が含まれていますが、XmlReader インスタンスの作成には Create メソッドを使用することをお勧めします。これによって、XmlReader クラスに追加されたすべての新機能を利用できます。 |
Version 1.1
次のコードは、空白を無視し、ファイル名 URI の解決に XmlUrlResolver オブジェクトを使用する XmlTextReader オブジェクトを作成します。
' 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;
Version 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 の導入に伴い、XmlValidatingReader クラスと XmlSchemaCollection クラスが廃止指定を受けました。検証型 XmlReader オブジェクトの作成には、それらの代わりに XmlReaderSettings クラスを使用する必要があります。XmlSchemaCollection クラスは XmlSchemaSet クラスで置き換えられています。
Version 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);
}
Version 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);
}
詳細については、「XmlReader による XML データの検証」および「スキーマをコンパイルするための XmlSchemaSet」を参照してください。
XmlWriter の作成
.NET Framework 2.0 の導入に伴い、XmlWriter オブジェクトは XmlWriter クラスの静的メソッド Create を使用して作成されます。XmlWriterSettings オブジェクトは、作成される XmlWriter でサポートする機能を指定します。
メモ : |
---|
.NET Framework には、XmlWriter クラスの実装である XmlTextWriter クラスが含まれていますが、XmlWriter オブジェクトの作成には、Create メソッドを使用することをお勧めします。これによって、XmlWriter クラスに追加されたすべての新機能を利用できます。 |
Version 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;
Version 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 の document() 関数など、オプションの XSLT 設定を有効にするために使用されます。
Version 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);
Version 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 クラスからの移行」を参照してください。