XmlAttributeAttribute クラス
XmlSerializer がクラス メンバを XML 属性としてシリアル化することを指定します。
この型のすべてのメンバの一覧については、XmlAttributeAttribute メンバ を参照してください。
System.Object
System.Attribute
System.Xml.Serialization.XmlAttributeAttribute
<AttributeUsage(AttributeTargets.Property Or AttributeTargets.Field _
Or AttributeTargets.Parameter Or AttributeTargets.ReturnValue)>
Public Class XmlAttributeAttribute Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field
| AttributeTargets.Parameter | AttributeTargets.ReturnValue)]
public class XmlAttributeAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Property |
AttributeTargets::Field | AttributeTargets::Parameter |
AttributeTargets::ReturnValue)]
public __gc class XmlAttributeAttribute : public Attribute
[JScript]
public
AttributeUsage(AttributeTargets.Property | AttributeTargets.Field |
AttributeTargets.Parameter | AttributeTargets.ReturnValue)
class XmlAttributeAttribute extends Attribute
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
XmlAttributeAttribute は、 XmlSerializer がオブジェクトをシリアル化または逆シリアル化する方法を制御する一連の属性に属します。類似する属性の全一覧については、「 XML シリアル化を制御する属性 」を参照してください。
XmlAttributeAttribute は、パブリック フィールドまたはパブリック プロパティに適用された場合、それらのフィールドやプロパティを XML 属性としてシリアル化するように XmlSerializer に通知します。既定では、 XmlSerializer は、パブリック フィールドまたはパブリック プロパティを XML 要素としてシリアル化します。
XmlAttributeAttribute は、XML スキーマ定義言語 (XSD) の単純型 (anySimpleType 型から派生した組み込みデータ型を含む) の 1 つに割り当てることができる値または値の配列を返す、パブリック フィールドまたはパブリック プロパティにだけ割り当てることができます。 Guid 、 Char 、列挙体など、XSD 単純型に割り当てることができるすべてのデータ型を使用できます。XSD 型のリスト、および .NET データ型への割り当て方法については、 DataType プロパティに関するトピックを参照してください。
XmlAttributeAttribute と共に設定できる特殊な属性が 2 つあります。 xml:lang (言語を指定) 属性および xml:space (空白の処理方法を指定) 属性です。これらの属性は、XML を処理するアプリケーションだけに関連がある情報を伝達するための属性です。これらを設定するコードの例を次に示します。
[XmlAttribute("xml:lang")]
public string Lang;
// Set this to 'default' or 'preserve'.
[XmlAttribute("space",
Namespace = "http://www.w3.org/XML/1998/namespace")]
public string Space
[Visual Basic]
<XmlAttribute("xml:lang")> _
Public Lang As String
' Set this to 'default' or 'preserve'.
<XmlAttribute("space", _
Namespace:= "http://www.w3.org/XML/1998/namespace")> _
Public Space As String
属性の使用方法については、「 属性を使用したメタデータの拡張 」を参照してください。
メモ コードでは、 XmlAttributeAttribute の代わりに XmlAttribute という短い語を使用できます。
使用例
[Visual Basic, C#, C++] XmlAttributeAttribute の適用対象となる複数のフィールドを保持しているクラスをシリアル化する例を次に示します。
Option Explicit
Option Strict
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Xml.Schema
Public Class Group
<XmlAttribute(Namespace := "http://www.cpandl.com")> _
Public GroupName As String
<XmlAttribute(DataType := "base64Binary")> _
Public GroupNumber() As Byte
<XmlAttribute(DataType := "date", AttributeName := "CreationDate")> _
Public Today As DateTime
End Class
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeObject("Attributes.xml")
End Sub
Public Sub SerializeObject(ByVal filename As String)
' Create an instance of the XmlSerializer class.
Dim mySerializer As New XmlSerializer(GetType(Group))
' Writing the file requires a TextWriter.
Dim writer As New StreamWriter(filename)
' Create an instance of the class that will be serialized.
Dim myGroup As New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
Dim hexByte() As Byte = {Convert.ToByte(100), Convert.ToByte(50)}
myGroup.GroupNumber = hexByte
Dim myDate As New DateTime(2001, 1, 10)
myGroup.Today = myDate
' Serialize the class, and close the TextWriter.
mySerializer.Serialize(writer, myGroup)
writer.Close()
End Sub
End Class
[C#]
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.Schema;
public class Group
{
[XmlAttribute (Namespace = "http://www.cpandl.com")]
public string GroupName;
[XmlAttribute(DataType = "base64Binary")]
public Byte [] GroupNumber;
[XmlAttribute(DataType = "date", AttributeName = "CreationDate")]
public DateTime Today;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("Attributes.xml");
}
public void SerializeObject(string filename)
{
// Create an instance of the XmlSerializer class.
XmlSerializer mySerializer =
new XmlSerializer(typeof(Group));
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
Byte [] hexByte = new Byte[2]{Convert.ToByte(100),
Convert.ToByte(50)};
myGroup.GroupNumber = hexByte;
DateTime myDate = new DateTime(2001,1,10);
myGroup.Today = myDate;
// Serialize the class, and close the TextWriter.
mySerializer.Serialize(writer, myGroup);
writer.Close();
}
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Serialization;
using namespace System::Xml::Schema;
public __gc class Group
{
public:
[XmlAttributeAttribute (Namespace = S"http://www.cpandl.com")]
String* GroupName;
[XmlAttributeAttribute(DataType = S"base64Binary")]
Byte GroupNumber[];
[XmlAttributeAttribute(DataType = S"date", AttributeName = S"CreationDate")]
DateTime Today;
};
void SerializeObject(String* filename)
{
// Create an instance of the XmlSerializer class.
XmlSerializer* mySerializer =
new XmlSerializer(__typeof(Group));
// Writing the file requires a TextWriter.
TextWriter* writer = new StreamWriter(filename);
// Create an instance of the class that will be serialized.
Group* myGroup = new Group();
// Set the object properties.
myGroup->GroupName = S".NET";
Byte hexByte[] = {Convert::ToByte(100),
Convert::ToByte(50)};
myGroup->GroupNumber = hexByte;
DateTime myDate = DateTime(2001,1,10);
myGroup->Today = myDate;
// Serialize the class, and close the TextWriter.
mySerializer->Serialize(writer, myGroup);
writer->Close();
}
int main()
{
SerializeObject(S"Attributes.xml");
}
[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 内)