Gets the collection of XmlAnyElementAttribute objects to override.
Assemblies: System.Xml (in System.Xml.dll)
System.Xml.XmlSerializer (in System.Xml.XmlSerializer.dll)
The XmlAnyElementAttribute can be applied to a member that returns an array of XmlElement objects on deserialization. This allows the XmlSerializer to deserialize any elements that do not have a corresponding member in the object being deserialized--thus those elements are "unknown" to the XmlSerializer. This is useful when the XML stream has been altered by an XML Web service, or when it is known that random data is always included with the XML stream.
The property allows you to override the serialization of a member to function as a member to which the XmlAnyElementAttribute has been applied.
The following example creates a new XmlAnyElementAttribute object and adds it to the collection of objects accessed through the property. The XmlAttributes object is then added to a XmlAttributeOverrides object which is used to create an XmlSerializer object. The XmlSerializer is used to serialize or deserialize an object. To see the effect of using the XmlAnyElementAttributes property, create an XML document named "UnknownElements.xml" by running the SerializeObject method in the Main method. Edit the resulting document to include other (unknown) elements. Comment out the SerializeObject call in the Main method, and uncomment the call to the DeserializeObject method, which prints out the name and value of any unknown XML element.
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
.NET FrameworkSupported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1
.NET Framework Client ProfileSupported in: 4, 3.5 SP1
XNA FrameworkSupported in: 3.0, 2.0, 1.0
Portable Class LibrarySupported in: Portable Class Library
Supported in: Windows Phone 8.1
Supported in: Windows Phone Silverlight 8.1
Supported in: Windows Phone Silverlight 8