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

XmlAnyElementAttribute オブジェクトのコレクションを表す XmlAnyElementAttributes オブジェクト。

XmlAnyElementAttribute は、逆シリアル化時に、XmlElement オブジェクトの配列を返すメンバに適用できます。これにより、XmlSerializer は、逆シリアル化されているオブジェクト内に対応するメンバを持っていない属性を逆シリアル化できるようになります。このため、これらの要素は、XmlSerializer に対しては "不明" になります。これは、XML ストリームが XML Web サービスによって変更されている場合、またはランダム データが常に XML ストリームと共に含まれることが判明している場合に役立ちます。
XmlAnyElements プロパティによって、メンバのシリアル化をオーバーライドして、XmlAnyElementAttribute が適用されたメンバとして機能するようにできます。

新しい XmlAnyElementAttribute オブジェクトを作成し、そのオブジェクトを XmlAnyElements プロパティをとおしてアクセスしたオブジェクトのコレクションに追加する例を次に示します。その後、XmlAttributes オブジェクトを XmlAttributeOverrides オブジェクトに追加し、これを使用して XmlSerializer オブジェクトを作成します。作成された XmlSerializer が、オブジェクトのシリアル化または逆シリアル化に使用されます。XmlAnyElementAttributes プロパティを使用するときの効果を確認するには、Main メソッド内で SerializeObject メソッドを実行することによって、"UnknownElements.xml" という名前の XML ドキュメントを作成します。結果として作成されたドキュメントを編集して、その他の (不明な) 要素を含めます。Main メソッド内の SerializeObject の呼び出しをコメント行に変更し、DeserializeObject メソッドの呼び出しはコメントから外します。これにより、不明な XML 要素の名前と値が出力されます。
Imports System Imports System.IO Imports System.Xml.Serialization Imports System.Xml Public Class Group Public GroupName As String <XmlAnyElement> _ Public Things () As object End Class Public Class Test Shared Sub Main() Dim t As Test = New Test() ' 1 Run this and create the XML document. ' 2 Add New elements to the XML document. ' 3 Comment out the New line, and uncomment ' the DeserializeObject line to deserialize the ' XML document and see unknown elements. t.SerializeObject("UnknownElements.xml") 't.DeserializeObject("UnknownElements.xml") End Sub Private Sub SerializeObject(filename As String) Dim ser As XmlSerializer = New XmlSerializer(GetType (Group)) Dim writer As TextWriter = New StreamWriter(filename) Dim g As Group = New Group() g.GroupName = "MyGroup" ser.Serialize(writer, g) writer.Close() End Sub Private Sub DeserializeObject(filename As String) Dim ser As XmlSerializer = CreateOverrideSerializer() ' A FileStream is needed to read the XML document. Dim fs As FileStream = New FileStream(filename, FileMode.Open) Dim g As Group = CType( _ ser.Deserialize(fs), Group) fs.Close() Console.WriteLine(g.GroupName) Console.WriteLine(g.Things.Length) Dim xelement As XmlELement for each xelement in g.Things Console.WriteLine(xelement.Name &": " & xelement.InnerXml) next End Sub Private Function CreateOverrideSerializer() As XmlSerializer Dim myAnyElement As XmlAnyElementAttribute = _ New XmlAnyElementAttribute() Dim xOverride As XmlAttributeOverrides = _ New XmlAttributeOverrides() Dim xAtts As XmlAttributes = New XmlAttributes() xAtts.XmlAnyElements.Add(myAnyElement) xOverride.Add(GetType(Group), "Things", xAtts) return New XmlSerializer(GetType(Group) , xOverride) End Function End Class
using System; using System.IO; using System.Xml.Serialization; using System.Xml; public class Group{ public string GroupName; [XmlAnyElement] public object[]Things; } public class Test{ static void Main(){ Test t = new Test(); // 1 Run this and create the XML document. // 2 Add new elements to the XML document. // 3 Comment out the new line, and uncomment // the DeserializeObject line to deserialize the // XML document and see unknown elements. t.SerializeObject("UnknownElements.xml"); // t.DeserializeObject("UnknownElements.xml"); } private void SerializeObject(string filename){ XmlSerializer ser = new XmlSerializer(typeof (Group)); TextWriter writer = new StreamWriter(filename); Group g = new Group(); g.GroupName = "MyGroup"; ser.Serialize(writer, g); writer.Close(); } private void DeserializeObject(string filename){ XmlSerializer ser = CreateOverrideSerializer(); // A FileStream is needed to read the XML document. FileStream fs = new FileStream(filename, FileMode.Open); Group g = (Group) ser.Deserialize(fs); fs.Close(); Console.WriteLine(g.GroupName); Console.WriteLine(g.Things.Length); foreach(XmlElement xelement in g.Things){ Console.WriteLine(xelement.Name + ": " + xelement.InnerXml); } } private XmlSerializer CreateOverrideSerializer(){ XmlAnyElementAttribute myAnyElement = new XmlAnyElementAttribute(); XmlAttributeOverrides xOverride = new XmlAttributeOverrides(); XmlAttributes xAtts = new XmlAttributes(); xAtts.XmlAnyElements.Add(myAnyElement); xOverride.Add(typeof(Group), "Things", xAtts); return new XmlSerializer(typeof(Group) , xOverride); } }
#using <System.dll> #using <System.xml.dll> using namespace System; using namespace System::IO; using namespace System::Xml::Serialization; using namespace System::Xml; public ref class Group { public: String^ GroupName; [XmlAnyElement] array<Object^>^Things; }; void SerializeObject( String^ filename ); void DeserializeObject( String^ filename ); XmlSerializer^ CreateOverrideSerializer(); int main() { // 1 Run this and create the XML document. // 2 Add new elements to the XML document. // 3 Comment out the next line, and uncomment // the DeserializeObject line to deserialize the // XML document and see unknown elements. SerializeObject( "UnknownElements.xml" ); // DeserializeObject(S"UnknownElements.xml"); } void SerializeObject( String^ filename ) { XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid ); TextWriter^ writer = gcnew StreamWriter( filename ); Group^ g = gcnew Group; g->GroupName = "MyGroup"; ser->Serialize( writer, g ); writer->Close(); } void DeserializeObject( String^ filename ) { XmlSerializer^ ser = CreateOverrideSerializer(); // A FileStream is needed to read the XML document. FileStream^ fs = gcnew FileStream( filename,FileMode::Open ); Group^ g = safe_cast<Group^>(ser->Deserialize( fs )); fs->Close(); Console::WriteLine( g->GroupName ); Console::WriteLine( g->Things->Length ); for ( int i = 0; i < g->Things->Length; ++i ) { XmlElement^ xelement = safe_cast<XmlElement^>(g->Things[ i ]); Console::WriteLine( "{0}: {1}", xelement->Name, xelement->InnerXml ); } } XmlSerializer^ CreateOverrideSerializer() { XmlAnyElementAttribute^ myAnyElement = gcnew XmlAnyElementAttribute; XmlAttributeOverrides^ xOverride = gcnew XmlAttributeOverrides; XmlAttributes^ xAtts = gcnew XmlAttributes; xAtts->XmlAnyElements->Add( myAnyElement ); xOverride->Add( Group::typeid, "Things", xAtts ); return gcnew XmlSerializer( Group::typeid,xOverride ); }
import System.*; import System.IO.*; import System.Xml.Serialization.*; import System.Xml.*; public class Group { public String groupName; /** @attribute XmlAnyElement() */ public Object things[]; } //Group public class Test { public static void main(String[] args) { Test t = new Test(); // 1 Run this and create the XML document. // 2 Add new elements to the XML document. // 3 Comment out the new line, and uncomment // the DeserializeObject line to deserialize the // XML document and see unknown elements. t.SerializeObject("UnknownElements.xml"); } //main // t.DeserializeObject("UnknownElements.xml"); private void SerializeObject(String fileName) { XmlSerializer ser = new XmlSerializer(Group.class.ToType()); TextWriter writer = new StreamWriter(fileName); Group g = new Group(); g.groupName = "MyGroup"; ser.Serialize(writer, g); writer.Close(); } //SerializeObject private void DeserializeObject(String fileName) { XmlSerializer ser = CreateOverrideSerializer(); // A FileStream is needed to read the XML document. FileStream fs = new FileStream(fileName, FileMode.Open); Group g = (Group)ser.Deserialize(fs); fs.Close(); Console.WriteLine(g.groupName); Console.WriteLine(g.things.get_Length()); for (int iCtr = 0; iCtr < g.things.get_Count(); iCtr++) { XmlElement xElement = (XmlElement)g.things[iCtr]; Console.WriteLine(xElement.get_Name() + ": " + xElement.get_InnerXml()); } } //DeserializeObject private XmlSerializer CreateOverrideSerializer() { XmlAnyElementAttribute myAnyElement = new XmlAnyElementAttribute(); XmlAttributeOverrides xOverride = new XmlAttributeOverrides(); XmlAttributes xAtts = new XmlAttributes(); xAtts.get_XmlAnyElements().Add(myAnyElement); xOverride.Add(Group.class.ToType(), "things", xAtts); return new XmlSerializer(Group.class.ToType(), xOverride); } //CreateOverrideSerializer } //Test

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.XmlAnyElements プロパティを検索する場合は、下記のリンクをクリックしてください。

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