XmlAttributes.XmlDefaultValue プロパティ
アセンブリ: System.Xml (system.xml.dll 内)

Dim instance As XmlAttributes Dim value As Object value = instance.XmlDefaultValue instance.XmlDefaultValue = value
/** @property */ public Object get_XmlDefaultValue () /** @property */ public void set_XmlDefaultValue (Object value)
public function get XmlDefaultValue () : Object public function set XmlDefaultValue (value : Object)
XML 要素または XML 属性の既定値を表す Object。

メンバに DefaultValueAttribute を適用することで XML 要素または XML 属性の既定値を指定できます。値を適用した結果を調べるには、アプリケーションを DLL または実行可能ファイルにコンパイルし、その結果生成されたファイルを引数として XML スキーマ定義ツール (XSD.exe) に渡します。XML スキーマ ドキュメントでは、既定値が default 属性に代入されます。次の例では、<Animal> 要素の既定値は "Dogs" です。
<?xml version="1.0"?> <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="Pets" nullable="true" type="Pets"/> <complexType name="Pets"> <sequence> <element default="Dogs" name="Animal" nullable="true" type="string" minOccurs="0"/> </sequence> </complexType> </schema>
既定値をオーバーライドするには、Object を作成して XmlDefaultValue に代入します。
フィールドまたはプロパティに代入された値が、そのフィールドまたはプロパティの既定値と等しい場合、その値は XmlSerializer で XML インスタンスにシリアル化されません。これは、代入された値を XML スキーマから復元できるためです。つまり、フィールドまたはプロパティをその既定値に設定することは、設定しないのと同じです。同様に、フィールドまたはプロパティに値が設定されていない場合、XmlSerializer はスキーマにある既定値を使用します。プロパティに既定値を設定した場合、および何の値も設定しなかった場合のいずれも、そのプロパティの値は XML ドキュメント インスタンスに格納されません。
スキーマの代わりにクラス コンストラクタを使用して既定値を割り当てることもできます。Xsd.exe を使用してスキーマからクラスを作成する場合は、クラス ファイル内の [System.ComponentModel.DefaultValueAttribute("myFieldName")] 属性をすべてコメントにするか削除して差し支えありません。

既定値が "Dog" に設定されているフィールドを保持している Pet という名前のクラスの例を次に示します。この例では、XmlAttributes オブジェクトも作成し、その XmlDefaultValue プロパティを新しい既定値 ("Cat") に設定します。これにより元の既定値がオーバーライドされます。そのため、フィールド値を "Cat" に設定すると、この値は XmlSerializer で既定値として扱われ、シリアル化されません。フィールド値を "Cat" 以外の値に設定した場合は、XmlSerializer でシリアル化されます。
Imports System Imports System.IO Imports System.Xml Imports System.Xml.Serialization Imports System.ComponentModel ' This is the class that will be serialized. Public Class Pet ' The default value for the Animal field is "Dog". <DefaultValueAttribute("Dog")> Public Animal As String End Class Public Class Run Public Shared Sub Main() Dim test As New Run() test.SerializeObject("OverrideDefaultValue.xml") test.DeserializeObject("OverrideDefaultValue.xml") End Sub 'Main ' Return an XmlSerializer used for overriding. Public Function CreateOverrider() As XmlSerializer ' Create the XmlAttributeOverrides and XmlAttributes objects. Dim xOver As New XmlAttributeOverrides() Dim xAttrs As New XmlAttributes() ' Add an override for the default value of the GroupName. Dim defaultName As Object = "Cat" xAttrs.XmlDefaultValue = defaultName ' Add all the XmlAttributes to the XmlAttribueOverrides object. xOver.Add(GetType(Pet), "Animal", xAttrs) ' Create the XmlSerializer and return it. Return New XmlSerializer(GetType(Pet), xOver) End Function Public Sub SerializeObject(ByVal filename As String) ' Create an instance of the XmlSerializer class. Dim mySerializer As XmlSerializer = CreateOverrider() ' Writing the file requires a TextWriter. Dim writer As New StreamWriter(filename) ' Create an instance of the class that will be serialized. Dim myPet As New Pet() ' Set the Animal property. If you set it to the default value , ' which is "Cat" (the value assigned to the XmlDefaultValue ' of the XmlAttributes object), no value will be serialized. ' If you change the value to any other value (including "Dog") , ' the value will be serialized. ' The default value "Cat" will be assigned (nothing serialized). myPet.Animal = "" ' Uncommenting the next line also results in the default ' value because Cat is the default value (not serialized). ' myPet.Animal = "Cat"; ' Uncomment the next line to see the value serialized: ' myPet.Animal = "fish"; ' This will also be serialized because Dog is not the ' default anymore. ' myPet.Animal = "Dog"; ' Serialize the class, and close the TextWriter. mySerializer.Serialize(writer, myPet) writer.Close() End Sub Public Sub DeserializeObject(ByVal filename As String) Dim mySerializer As XmlSerializer = CreateOverrider() Dim fs As New FileStream(filename, FileMode.Open) Dim myPet As Pet = CType(mySerializer.Deserialize(fs), Pet) Console.WriteLine(myPet.Animal) End Sub End Class
using System; using System.IO; using System.Xml; using System.Xml.Serialization; using System.ComponentModel; // This is the class that will be serialized. public class Pet { // The default value for the Animal field is "Dog". [DefaultValueAttribute("Dog")] public string Animal ; } public class Run { public static void Main() { Run test = new Run(); test.SerializeObject("OverrideDefaultValue.xml"); test.DeserializeObject("OverrideDefaultValue.xml"); } // Return an XmlSerializer used for overriding. public XmlSerializer CreateOverrider() { // Create the XmlAttributeOverrides and XmlAttributes objects. XmlAttributeOverrides xOver = new XmlAttributeOverrides(); XmlAttributes xAttrs = new XmlAttributes(); // Add an override for the default value of the GroupName. Object defaultAnimal= "Cat"; xAttrs.XmlDefaultValue = defaultAnimal; // Add all the XmlAttributes to the XmlAttribueOverrides object. xOver.Add(typeof(Pet), "Animal", xAttrs); // Create the XmlSerializer and return it. return new XmlSerializer(typeof(Pet), xOver); } public void SerializeObject(string filename) { // Create an instance of the XmlSerializer class. XmlSerializer mySerializer = CreateOverrider(); // Writing the file requires a TextWriter. TextWriter writer = new StreamWriter(filename); // Create an instance of the class that will be serialized. Pet myPet = new Pet(); /* Set the Animal property. If you set it to the default value, which is "Cat" (the value assigned to the XmlDefaultValue of the XmlAttributes object), no value will be serialized. If you change the value to any other value (including "Dog"), the value will be serialized. */ // The default value "Cat" will be assigned (nothing serialized). myPet.Animal= ""; // Uncommenting the next line also results in the default // value because Cat is the default value (not serialized). // myPet.Animal = "Cat"; // Uncomment the next line to see the value serialized: // myPet.Animal = "fish"; // This will also be serialized because Dog is not the // default anymore. // myPet.Animal = "Dog"; // Serialize the class, and close the TextWriter. mySerializer.Serialize(writer, myPet); writer.Close(); } public void DeserializeObject(string filename) { XmlSerializer mySerializer = CreateOverrider(); FileStream fs = new FileStream(filename, FileMode.Open); Pet myPet= (Pet)mySerializer.Deserialize(fs); Console.WriteLine(myPet.Animal); } }
#using <System.dll> #using <System.Xml.dll> using namespace System; using namespace System::IO; using namespace System::Xml; using namespace System::Xml::Serialization; using namespace System::ComponentModel; // This is the class that will be serialized. public ref class Pet { public: // The default value for the Animal field is "Dog". [DefaultValueAttribute("Dog")] String^ Animal; }; // Return an XmlSerializer used for overriding. XmlSerializer^ CreateOverrider() { // Create the XmlAttributeOverrides and XmlAttributes objects. XmlAttributeOverrides^ xOver = gcnew XmlAttributeOverrides; XmlAttributes^ xAttrs = gcnew XmlAttributes; // Add an override for the default value of the GroupName. Object^ defaultAnimal = "Cat"; xAttrs->XmlDefaultValue = defaultAnimal; // Add all the XmlAttributes to the XmlAttribueOverrides object. xOver->Add( Pet::typeid, "Animal", xAttrs ); // Create the XmlSerializer and return it. return gcnew XmlSerializer( Pet::typeid,xOver ); } void SerializeObject( String^ filename ) { // Create an instance of the XmlSerializer class. XmlSerializer^ mySerializer = CreateOverrider(); // Writing the file requires a TextWriter. TextWriter^ writer = gcnew StreamWriter( filename ); // Create an instance of the class that will be serialized. Pet^ myPet = gcnew Pet; /* Set the Animal property. If you set it to the default value, which is "Cat" (the value assigned to the XmlDefaultValue of the XmlAttributes object), no value will be serialized. If you change the value to any other value (including "Dog"), the value will be serialized. */ // The default value "Cat" will be assigned (nothing serialized). myPet->Animal = ""; // Uncommenting the next line also results in the default // value because Cat is the default value (not serialized). // myPet.Animal = "Cat"; // Uncomment the next line to see the value serialized: // myPet.Animal = "fish"; // This will also be serialized because Dog is not the // default anymore. // myPet.Animal = "Dog"; // Serialize the class, and close the TextWriter. mySerializer->Serialize( writer, myPet ); writer->Close(); } void DeserializeObject( String^ filename ) { XmlSerializer^ mySerializer = CreateOverrider(); FileStream^ fs = gcnew FileStream( filename,FileMode::Open ); Pet^ myPet = dynamic_cast<Pet^>(mySerializer->Deserialize( fs )); Console::WriteLine( myPet->Animal ); } int main() { SerializeObject( "OverrideDefaultValue.xml" ); DeserializeObject( "OverrideDefaultValue.xml" ); }
import System.*; import System.IO.*; import System.Xml.*; import System.Xml.Serialization.*; import System.ComponentModel.*; // This is the class that will be serialized. public class Pet { // The default value for the Animal field is "Dog". /** @attribute DefaultValueAttribute("Dog") */ public String animal; } //Pet public class Run { public static void main(String[] args) { Run test = new Run(); test.SerializeObject("OverrideDefaultValue.xml"); test.DeserializeObject("OverrideDefaultValue.xml"); } //main // Return an XmlSerializer used for overriding. public XmlSerializer CreateOverrider() { // Create the XmlAttributeOverrides and XmlAttributes objects. XmlAttributeOverrides xOver = new XmlAttributeOverrides(); XmlAttributes xAttrs = new XmlAttributes(); // Add an override for the default value of the GroupName. Object defaultAnimal = "Cat"; xAttrs.set_XmlDefaultValue(defaultAnimal); // Add all the XmlAttributes to the XmlAttribueOverrides object. xOver.Add(Pet.class.ToType(), "Animal", xAttrs); // Create the XmlSerializer and return it. return new XmlSerializer(Pet.class.ToType(), xOver); } //CreateOverrider public void SerializeObject(String fileName) { // Create an instance of the XmlSerializer class. XmlSerializer mySerializer = CreateOverrider(); // Writing the file requires a TextWriter. TextWriter writer = new StreamWriter(fileName); // Create an instance of the class that will be serialized. Pet myPet = new Pet(); /* Set the Animal property. If you set it to the default value, which is "Cat" (the value assigned to the XmlDefaultValue of the XmlAttributes object), no value will be serialized. If you change the value to any other value (including "Dog") , the value will be serialized. */ // The default value "Cat" will be assigned (nothing serialized). myPet.animal = ""; // Uncommenting the next line also results in the default // value because Cat is the default value (not serialized). // myPet.Animal = "Cat"; // Uncomment the next line to see the value serialized: // myPet.Animal = "fish"; // This will also be serialized because Dog is not the // default anymore. // myPet.Animal = "Dog"; // Serialize the class, and close the TextWriter. mySerializer.Serialize(writer, myPet); writer.Close(); } //SerializeObject public void DeserializeObject(String fileName) { XmlSerializer mySerializer = CreateOverrider(); FileStream fs = new FileStream(fileName, FileMode.Open); Pet myPet = (Pet)mySerializer.Deserialize(fs); Console.WriteLine(myPet.animal); } //DeserializeObject } //Run

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からXmlAttributes.XmlDefaultValue プロパティを検索する場合は、下記のリンクをクリックしてください。

- XmlAttributes.XmlDefaultValue プロパティのページへのリンク