方法 : XML 要素および XML 属性名を修飾する
コード例
XmlSerializerNamespaces クラスのインスタンスに格納される XML 名前空間は、W3C (World Wide Web Consortium) (www.w3.org) の仕様『Namespaces in XML』に準拠する必要があります。
XML 名前空間を使用すると、XML ドキュメント内の XML 要素および XML 属性の名前を修飾できます。修飾名は、プレフィックスとローカル名がコロンで区切られた構成になっています。プレフィックスはプレースホルダとしてのみ機能し、名前空間を指定する URI に割り当てられます。汎用的に管理される URI 名前空間とローカル名を組み合わせることにより、生成される名前は、必ず汎用的に一意になります。
XmlSerializerNamespaces のインスタンスを作成し、そのオブジェクトに名前空間のペアを追加することで、XML ドキュメントで使用されるプレフィックスを指定できます。
XML ドキュメントにおける修飾名を作成するには
XmlSerializerNamespaces クラスのインスタンスを作成します。
すべてのプレフィックスと名前空間のペアを XmlSerializerNamespaces に追加します。
XmlSerializer で XML ドキュメントにシリアル化する各メンバやクラスに、適切な System.Xml.Serialization 属性を適用します。
適用できる属性は、XmlAnyElementAttribute、XmlArrayAttribute、XmlArrayItemAttribute、XmlAttributeAttribute、XmlElementAttribute、XmlRootAttribute、および XmlTypeAttribute です。
各属性の Namespace プロパティを、XmlSerializerNamespaces のいずれかの名前空間値に設定します。
XmlSerializerNamespaces を XmlSerializer の Serialize メソッドに渡します。
例
XmlSerializerNamespaces を作成し、このオブジェクトにプレフィックスと名前空間のペアを 2 つ追加する例を次に示します。このコードでは、Books
クラスのインスタンスをシリアル化するために使用される XmlSerializer を作成します。また、XmlSerializerNamespaces を使用して Serialize メソッドを呼び出し、XML にプレフィックス付き名前空間を含めることができるようにします。
Option Explicit
public class Price
{
[XmlAttribute(Namespace = "http://www.cpandl.com")]
public string currency;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal price;
}
Option Strict
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeObject("XmlNamespaces.xml")
End Sub 'Main
Public Sub SerializeObject(filename As String)
Dim mySerializer As New XmlSerializer(GetType(Books))
' Writing a file requires a TextWriter.
Dim myWriter As New StreamWriter(filename)
' Creates an XmlSerializerNamespaces and adds two
' prefix-namespace pairs.
Dim myNamespaces As New XmlSerializerNamespaces()
myNamespaces.Add("books", "http://www.cpandl.com")
myNamespaces.Add("money", "http://www.cohowinery.com")
' Creates a Book.
Dim myBook As New Book()
myBook.TITLE = "A Book Title"
Dim myPrice As New Price()
myPrice.price = CDec(9.95)
myPrice.currency = "US Dollar"
myBook.PRICE = myPrice
Dim myBooks As New Books()
myBooks.Book = myBook
mySerializer.Serialize(myWriter, myBooks, myNamespaces)
myWriter.Close()
End Sub
End Class
Public Class Books
<XmlElement([Namespace] := "http://www.cohowinery.com")> _
Public Book As Book
End Class 'Books
<XmlType([Namespace] := "http://www.cpandl.com")> _
Public Class Book
<XmlElement([Namespace] := "http://www.cpandl.com")> _
Public TITLE As String
<XmlElement([Namespace] := "http://www.cohowinery.com")> _
Public PRICE As Price
End Class
Public Class Price
<XmlAttribute([Namespace] := "http://www.cpandl.com")> _
Public currency As String
Public <XmlElement([Namespace] := "http://www.cohowinery.com")> _
price As Decimal
End Class
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("XmlNamespaces.xml");
}
public void SerializeObject(string filename)
{
XmlSerializer mySerializer = new XmlSerializer(typeof(Books));
// Writing a file requires a TextWriter.
TextWriter myWriter = new StreamWriter(filename);
// Creates an XmlSerializerNamespaces and adds two
// prefix-namespace pairs.
XmlSerializerNamespaces myNamespaces =
new XmlSerializerNamespaces();
myNamespaces.Add("books", "http://www.cpandl.com");
myNamespaces.Add("money", "http://www.cohowinery.com");
// Creates a Book.
Book myBook = new Book();
myBook.TITLE = "A Book Title";
Price myPrice = new Price();
myPrice.price = (decimal) 9.95;
myPrice.currency = "US Dollar";
myBook.PRICE = myPrice;
Books myBooks = new Books();
myBooks.Book = myBook;
mySerializer.Serialize(myWriter,myBooks,myNamespaces);
myWriter.Close();
}
}
public class Books
{
[XmlElement(Namespace = "http://www.cohowinery.com")]
public Book Book;
}
[XmlType(Namespace ="http://www.cpandl.com")]
public class Book
{
[XmlElement(Namespace = "http://www.cpandl.com")]
public string TITLE;
[XmlElement(Namespace ="http://www.cohowinery.com")]
public Price PRICE;
}
関連項目
タスク
方法 : XML ストリームの代替要素名を指定する
方法 : オブジェクトをシリアル化する
方法 : オブジェクトを逆シリアル化する
参照
XmlSerializer Class
XmlSerializerNamespaces Class
概念
XML スキーマ定義ツールと XML シリアル化
XML シリアル化の概要
XML シリアル化を制御する属性
Copyright © 2007 by Microsoft Corporation.All rights reserved.