XmlSerializerNamespaces クラス
XmlSerializer が XML ドキュメント インスタンスで限定名を生成するために使用する XML 名前空間とプリフィックスが格納されています。
この型のすべてのメンバの一覧については、XmlSerializerNamespaces メンバ を参照してください。
System.Object
System.Xml.Serialization.XmlSerializerNamespaces
Public Class XmlSerializerNamespaces
[C#]
public class XmlSerializerNamespaces
[C++]
public __gc class XmlSerializerNamespaces
[JScript]
public class XmlSerializerNamespaces
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
XmlSerializerNamespaces には、XML 名前空間のコレクションと、それぞれの名前空間に関連付けられたプリフィックスが格納されています。 XmlSerializer は、この XmlSerializerNamespaces クラスのインスタンスを使用して、XML ドキュメントで限定名を作成します。
XmlSerializerNamespaces に格納される XML 名前空間は、W3C (www.w3.org) による仕様『Namespaces in XML』に準拠する必要があります。
XML 名前空間を使用すると、XML ドキュメント内の XML 要素と XML 属性の名前を限定できます。限定名は、プリフィックスとローカル名をコロンで区切った構成になっています。プリフィックスはプレースホルダとしてだけ機能し、名前空間を指定する URI に割り当てられます。汎用的に管理された URI 名前空間とローカル名を組み合わせることにより、生成される名前は、必ず汎用的に一意となります。
XML ドキュメントで限定名を作成するには、次の手順を実行します。
- XmlSerializerNamespaces インスタンスを作成します。
- Add メソッドを使用して、必要なプリフィックスと名前空間の各ペアをこのインスタンスに追加します。
- XmlSerializer が XML ドキュメントにシリアル化する各プロパティまたはクラスに、適切な .NET 属性を適用します。使用できる属性は、 XmlArrayAttribute 、 XmlArrayItemAttribute 、 XmlAttributeAttribute 、 XmlElementAttribute 、 XmlRootAttribute 、および XmlTypeAttribute です。
- 各属性の Namespace プロパティを XmlSerializerNamespaces オブジェクトの名前空間値の 1 つに設定します。
- XmlSerializerNamespaces を XmlSerializer の Serialize メソッドに渡します。
使用例
[Visual Basic, C#, C++] XmlSerializerNamespaces オブジェクトを作成し、そのオブジェクトにプリフィックスと名前空間のペアを 2 つ追加する例を次に示します。この例では、次に XmlSerializerNamespaces を Serialize メソッドに渡し、このメソッドが Books オブジェクトを XML ドキュメントにシリアル化します。 Serialize メソッドは、 XmlSerializerNamespaces オブジェクトを使用して、各 XML 要素と属性を 2 つの名前空間のいずれかで限定します。
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
Public Sub SerializeObject(ByVal filename As String)
Dim s As New XmlSerializer(GetType(Books))
' Writing a file requires a TextWriter.
Dim t As New StreamWriter(filename)
' Create an XmlSerializerNamespaces object and add two
' prefix-namespace pairs.
Dim ns As New XmlSerializerNamespaces()
ns.Add("books", "http://www.cpandl.com")
ns.Add("money", "http://www.cohowinery.com")
' Create a Book instance.
Dim b As New Book()
b.TITLE = "A Book Title"
Dim p As New Price()
p.price = CDec(9.95)
p.currency = "US Dollar"
b.PRICE = p
Dim bks As New Books()
bks.Book = b
s.Serialize(t, bks, ns)
t.Close()
End Sub
End Class
Public Class Books
<XmlElement(Namespace := "http://www.cohowinery.com")> _
Public Book As Book
End Class
<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
<XmlElement(Namespace := "http://www.cohowinery.com")> _
Public price As Decimal
End Class
[C#]
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 s = new XmlSerializer(typeof(Books));
// Writing a file requires a TextWriter.
TextWriter t = new StreamWriter(filename);
/* Create an XmlSerializerNamespaces object and add two
prefix-namespace pairs. */
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("books", "http://www.cpandl.com");
ns.Add("money", "http://www.cohowinery.com");
// Create a Book instance.
Book b = new Book();
b.TITLE = "A Book Title";
Price p = new Price();
p.price = (decimal) 9.95;
p.currency = "US Dollar";
b.PRICE = p;
Books bks = new Books();
bks.Book = b;
s.Serialize(t,bks,ns);
t.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;
}
public class Price
{
[XmlAttribute(Namespace = "http://www.cpandl.com")]
public string currency;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal price;
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Serialization;
public __gc class Price
{
public:
[XmlAttributeAttribute(Namespace = S"http://www.cpandl.com")]
String* currency;
[XmlElement(Namespace = S"http://www.cohowinery.com")]
Decimal price;
};
[XmlType(Namespace =S"http://www.cpandl.com")]
public __gc class Book
{
public:
[XmlElement(Namespace = S"http://www.cpandl.com")]
String* TITLE;
[XmlElement(Namespace =S"http://www.cohowinery.com")]
Price* PRICE;
};
public __gc class Books
{
public:
[XmlElement(Namespace = S"http://www.cohowinery.com")]
Book* Book;
};
public __gc class Run
{
public:
static void main()
{
Run* test = new Run();
test->SerializeObject(S"XmlNamespaces.xml");
}
void SerializeObject(String* filename)
{
XmlSerializer* s = new XmlSerializer(__typeof(Books));
// Writing a file requires a TextWriter.
TextWriter* t = new StreamWriter(filename);
/* Create an XmlSerializerNamespaces object and add two
prefix-namespace pairs. */
XmlSerializerNamespaces* ns = new XmlSerializerNamespaces();
ns->Add(S"books", S"http://www.cpandl.com");
ns->Add(S"money", S"http://www.cohowinery.com");
// Create a Book instance.
Book* b = new Book();
b->TITLE = S"A Book Title";
Price* p = new Price();
p->price = (Decimal) 9.95;
p->currency = S"US Dollar";
b->PRICE = p;
Books* bks = new Books();
bks->Book = b;
s->Serialize(t,bks,ns);
t->Close();
}
};
int main()
{
Run::main();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Xml.Serialization
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: System.Xml (System.Xml.dll 内)