XmlNamespaceDeclarationsAttribute クラス

定義

ターゲットのプロパティ、パラメーター、戻り値、またはクラス メンバーに、XML ドキュメント内で使用される名前空間に関連付けられたプレフィックスを含めるように指定します。Specifies that the target property, parameter, return value, or class member contains prefixes associated with namespaces that are used within an XML document.

public ref class XmlNamespaceDeclarationsAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)]
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)]
public class XmlNamespaceDeclarationsAttribute : Attribute
type XmlNamespaceDeclarationsAttribute = class
    inherit Attribute
Public Class XmlNamespaceDeclarationsAttribute
Inherits Attribute
継承
XmlNamespaceDeclarationsAttribute
属性

注釈

XmlNamespaceDeclarationsAttribute 属性は、クラス内で XmlSerializerNamespaces オブジェクトを返すフィールドまたはプロパティに1回だけ適用できます。The XmlNamespaceDeclarationsAttribute attribute can only be applied once in a class to a field or property that returns an XmlSerializerNamespaces object.

XmlNamespaceDeclarationsAttribute では、XML ドキュメントで使用されるプレフィックスと、関連付けられている名前空間を格納できます。The XmlNamespaceDeclarationsAttribute allows you to store the prefixes, and the associated namespaces, used in an XML document. たとえば、属性の一般的な使用方法の1つとして、XPath データを格納することが挙げられます。これは World Wide Web コンソーシアムドキュメントの名前付きXML Language (xpath) バージョン 1.0で定義されているためです。For example, one common usage of the attribute is to store XPath data, as it is defined by the World Wide Web Consortium document named XML Language (XPath) Version 1.0. 簡単に言えば、XPath は、多くの名前空間プレフィックスとローカル名を含む文字列であり、他の構文もあります。In brief, an XPath is a string that contains many namespace prefixes and local names, along with some other syntax.

XPath 言語では、プレフィックスとパスを関連付け、XML ドキュメント内でプレフィックスを使用することができます。The XPath language allows for the association of a prefix with a path, and using the prefix within the XML document. たとえば、"select" という名前の XML ドキュメントには、特定の URI (http://www.cohowinery.com/calendar/) に関連付けられているプレフィックス ("cal") が含まれています。For example, the following XML document named "select" contains a prefix ("cal") associated with a specific URI (http://www.cohowinery.com/calendar/). 要素には、XPath を含む "path" という名前の属性が含まれています。The element contains an attribute named "path" that contains the XPath.

<select xmlns:cal ="http://www.cohowinery.com/calendar/" path="cal:appointments/@startTime" />  

この場合のスキーマは次のようになります。The schema for this might be:

<element name="select">  
   <complexType>  
      <simpleContent>  
         <attribute name="path" />  
      </simpleContent>  
   </complexType>  
</element>  

XmlNamespaceDeclarationsAttributeがない場合、プレフィックスと名前空間の間の関連付けは失われます。Without the XmlNamespaceDeclarationsAttribute, the association between the prefix and the namespace is lost.

プレフィックスと名前空間 URI の間の関連付けを保持するには、次C#のコードと Visual Basic コードに示すように、XmlSerializerNamespaces オブジェクトを返し、XmlNamespaceDeclarationsAttribute 属性をメンバーに適用するメンバーを追加します。To retain the association between the prefix and the namespace URI, add a member that returns an XmlSerializerNamespaces object and apply the XmlNamespaceDeclarationsAttribute attribute to the member, as shown in the following C# and Visual Basic code:

// C#  
public class Select {  
  [XmlAttribute] public string path;  
  [XmlNamespaceDeclarations] public XmlSerializerNamespaces xmlns;  
}  
' Visual Basic  
Public Class Select  
   <XmlAttribute> Public path As String  
   <XmlNamespaceDeclarations> Public xmlns As XmlSerializerNamespaces  
End Class  

シリアル化する場合、生成された XML ドキュメントのスキーマには、appinfoという名前の XML スキーマ定義 (XSD) 要素が含まれます。When serialized, the schema for the generated XML document contains the XML Schema definition (XSD) element named appinfo. 要素には、さらに keepNamespaceDeclarationsという名前のメタデータ要素が含まれます。これは、名前空間宣言を含むメンバーの名前に設定されます。The element further contains a metadata element named keepNamespaceDeclarations, set to the name of the member that contains the namespace declarations. 次の XML フラグメントは、スキーマを示しています。The following XML fragment shows the schema:

<xs:element name="select">  
   <xs:complexType>  
      <xs:annotation>   
         <xs:appinfo>  
          <keepNamespaceDeclarations>xmlns</keepNamespaceDeclarations>  
         </xs:appinfo>   
      </xs:annotation>   
      <xs:simpleContent>  
         <xs:attribute name="path" />  
      </xs:simpleContent>  
   </xs:complexType>  
</xs:element>  

逆シリアル化では、xmlns フィールドに、すべての名前空間プレフィックスの定義を含む XmlSerializerNamespaces オブジェクトが格納されます。On deserialization, the xmlns field contains an XmlSerializerNamespaces object that contains all namespace prefix definitions.

シリアル化では、ユーザーは Add メソッドを使用して、XmlSerializerNamespaces オブジェクトにプレフィックスと名前空間のペアを追加できます。On serialization, the user can add prefix-namespace pairs to the XmlSerializerNamespaces object using the Add method. これは、次C#のコードと Visual Basic コードに示されています。This is shown in the following C# and Visual Basic code:

// C#  
using System;  
using System.IO;  
using System.Xml.Serialization;  
[XmlRoot("select")]  
public class Select {  
   [XmlAttribute]  
   public string xpath;  
   [XmlNamespaceDeclarations]  
   public XmlSerializerNamespaces xmlns;  
}  
public class Test {  
   public static void Main(string[] args) {  
      Select mySelect = new Select();  
      mySelect.xpath = "myNS:ref/@common:y";  
      mySelect.xmlns = new XmlSerializerNamespaces();  
      mySelect.xmlns.Add("MyNS", "myNS.tempuri.org");  
      mySelect.xmlns.Add("common", "common.tempuri.org");  
      XmlSerializer ser = new XmlSerializer(typeof(Select));  
      ser.Serialize(Console.Out, mySelect);  
   }  
}  
// Output:  
// <?xml version="1.0" encoding="IBM437"?>  
// <select xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
// xmlns:common="common.tempuri.org" xmlns:MyNS="myNS.tempuri.org" xpath="myNS:ref/@common:y" />  
' Visual Basic  
Imports System  
Imports System.IO  
Imports System.Xml.Serialization  
<XmlRoot("select")> _  
Public Class SelectPath  
   <XmlAttribute> _  
   Public xpath As String   
   <XmlNamespaceDeclarations> _  
   public xmlns As XmlSerializerNamespaces   
End Class  
Public Class Test   
   Public Shared Sub Main()   
      Dim mySelect As SelectPath = New SelectPath()  
      mySelect.xpath = "myNS:ref/@common:y"  
      mySelect.xmlns = New XmlSerializerNamespaces()  
      mySelect.xmlns.Add("MyNS", "myNS.tempuri.org")  
      mySelect.xmlns.Add("common", "common.tempuri.org")  
      Dim ser As XmlSerializer = New XmlSerializer(mySelect.GetType)  
      ser.Serialize(Console.Out, mySelect)  
   End Sub  
End Class  
'Output:  
' <?xml version="1.0" encoding="IBM437"?>  
' <select xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
' xmlns:common="common.tempuri.org" xmlns:MyNS="myNS.tempuri.org" xpath="myNS:ref/@common:y" />  

また、属性が適用されるメンバーには、クラスで定義されている XML 要素に属するプレフィックスと名前空間のペアのみが含まれることに注意してください。Also note that the member to which the attribute is applied contains only the prefix-namespace pairs that belong to the XML element defined by the class. たとえば、次の XML ドキュメントでは、プレフィックスペア "cal" だけがキャプチャされますが、"x" プレフィックスはキャプチャされません。For example, in the following XML document, only the prefix pair "cal" is captured, but not the "x" prefix. そのデータを取得するには、XmlNamespaceDeclarationsAttribute を持つメンバーを、root 要素を表すクラスに追加します。To get that data, add a member with the XmlNamespaceDeclarationsAttribute to the class that represents the root element.

<?xml version="1.0"?>  
<x:root xmlns:x="http://www.cohowinery.com/x/">  
  <x:select xmlns:cal="http://www.cohowinery.com/calendar/" path="cal:appointments/@cal:startTime" />  
</x:root>  

コンストラクター

XmlNamespaceDeclarationsAttribute()

XmlNamespaceDeclarationsAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the XmlNamespaceDeclarationsAttribute class.

プロパティ

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(継承元 Attribute)

メソッド

Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(継承元 Attribute)
Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

明示的なインターフェイスの実装

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(継承元 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(継承元 Attribute)

適用対象