XmlNamespaceDeclarationsAttribute クラス

定義

ターゲットのプロパティ、パラメーター、戻り値、またはクラス メンバーに、XML ドキュメント内で使用される名前空間に関連付けられたプレフィックスを含めるように指定します。

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

注釈

属性は XmlNamespaceDeclarationsAttribute 、オブジェクトを返す XmlSerializerNamespaces フィールドまたはプロパティに対して、クラス内で 1 回だけ適用できます。

XmlNamespaceDeclarationsAttributeを使用すると、XML ドキュメントで使用されるプレフィックスと関連する名前空間を格納できます。 たとえば、 属性の一般的な使用方法の 1 つは、 XML Language (XPath) バージョン 1.0 という名前の World Wide Web Consortium ドキュメントで定義されているため、XPath データを格納することです。 簡単に言うと、XPath は、多くの名前空間プレフィックスとローカル名を含む文字列であり、その他の構文も含まれています。

XPath 言語を使用すると、プレフィックスとパスを関連付け、XML ドキュメント内でプレフィックスを使用できます。 たとえば、"select" という名前の次の XML ドキュメントには、特定の URIhttp://www.cohowinery.com/calendar/ () に関連付けられたプレフィックス ("cal") が含まれています。 要素には、XPath を含む "path" という名前の属性が含まれています。

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

このスキーマは次のようになります。

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

XmlNamespaceDeclarationsAttributeを指定しないと、プレフィックスと名前空間の間の関連付けが失われます。

プレフィックスと名前空間 URI の間の関連付けを保持するには、次の C# コードと Visual Basic コードに示すように、オブジェクトを XmlSerializerNamespaces 返すメンバーを追加し、そのメンバーに属性を適用 XmlNamespaceDeclarationsAttribute します。

// 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) 要素が含まれます。 要素には さらに、 という名前 keepNamespaceDeclarationsのメタデータ要素が含まれています。名前空間宣言を含むメンバーの名前に設定されます。 次の XML フラグメントは、スキーマを示しています。

<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 すべての名前空間プレフィックス定義を含む オブジェクトが含まれます。

シリアル化では、 メソッドを使用して、プレフィックスと名前空間のペアを オブジェクトにXmlSerializerNamespacesAdd追加できます。 これは、次の C# と Visual Basic のコードに示されています。

// 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 要素に属するプレフィックスと名前空間のペアのみが含まれていることに注意してください。 たとえば、次の XML ドキュメントでは、プレフィックス ペア "cal" のみがキャプチャされますが、"x" プレフィックスはキャプチャされません。 そのデータを取得するには、 要素を表す クラスに を持つ XmlNamespaceDeclarationsAttribute メンバーを root 追加します。

<?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 クラスの新しいインスタンスを初期化します。

プロパティ

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。

(継承元 Attribute)

メソッド

Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。

(継承元 Attribute)
Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

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

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

一連の名前を対応する一連のディスパッチ識別子に割り当てます。

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

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。

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

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。

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

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。

(継承元 Attribute)

適用対象