Modifica

Condividi tramite


XmlAnyElementAttributes Class

Definition

Represents a collection of XmlAnyElementAttribute objects.

public ref class XmlAnyElementAttributes : System::Collections::IList
public ref class XmlAnyElementAttributes : System::Collections::CollectionBase
public class XmlAnyElementAttributes : System.Collections.IList
public class XmlAnyElementAttributes : System.Collections.CollectionBase
type XmlAnyElementAttributes = class
    interface ICollection
    interface IEnumerable
    interface IList
type XmlAnyElementAttributes = class
    inherit CollectionBase
Public Class XmlAnyElementAttributes
Implements IList
Public Class XmlAnyElementAttributes
Inherits CollectionBase
Inheritance
XmlAnyElementAttributes
Inheritance
XmlAnyElementAttributes
Implements

Examples

The following example creates a new XmlAnyElementAttribute and adds it to the collection of objects accessed through the XmlAnyElements property. The XmlAttributes is then added to a XmlAttributeOverrides which is used to create an XmlSerializer. 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.

#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 );
}
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);
   }
}
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

Remarks

Use the XmlAnyElementAttributes to override the behavior of a set of XmlAnyElementAttribute objects. Multiple instances of the XmlAnyElementAttribute class can be applied to a class member, as long as each instance has a distinct Name property value; this instructs the XmlSerializer to collect unknown elements under the named element into the appropriate array. It is for this reason that multiple instances of the XmlAnyElementAttribute class can be added to the XmlAnyElementAttributes.

To override a set of XmlAnyElementAttribute objects:

  1. Create an XmlAnyElementAttributes.

  2. Create the set of XmlAnyElementAttribute objects, and add each object to the collection using the Add method.

  3. Create an XmlAttributes.

  4. Set the XmlAnyElements property to the XmlAnyElementAttributes.

  5. Create an XmlAttributeOverrides.

  6. Add the XmlAttributes to the XmlAttributeOverrides using the Add method.

  7. Create an instance of the XmlSerializer using the XmlAttributeOverrides.

  8. Serialize or deserialize an object that contains the set of XmlAnyElementAttribute objects.

Constructors

XmlAnyElementAttributes()

Initializes a new instance of the XmlAnyElementAttributes class.

Properties

Capacity

Gets or sets the number of elements that the CollectionBase can contain.

(Inherited from CollectionBase)
Count

Gets the number of elements contained in the ICollection.

Count

Gets the number of elements contained in the CollectionBase instance. This property cannot be overridden.

(Inherited from CollectionBase)
InnerList

Gets an ArrayList containing the list of elements in the CollectionBase instance.

(Inherited from CollectionBase)
Item[Int32]

Gets or sets the XmlAnyElementAttribute at the specified index.

List

Gets an IList containing the list of elements in the CollectionBase instance.

(Inherited from CollectionBase)

Methods

Add(XmlAnyElementAttribute)

Adds an XmlAnyElementAttribute to the collection.

Clear()

Removes all items from the IList.

Clear()

Removes all objects from the CollectionBase instance. This method cannot be overridden.

(Inherited from CollectionBase)
Contains(XmlAnyElementAttribute)

Gets a value that indicates whether the specified XmlAnyElementAttribute exists in the collection.

CopyTo(XmlAnyElementAttribute[], Int32)

Copies the entire collection to a compatible one-dimensional array of XmlElementAttribute objects, starting at the specified index of the target array.

Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator()

Returns an enumerator that iterates through a collection.

GetEnumerator()

Returns an enumerator that iterates through the CollectionBase instance.

(Inherited from CollectionBase)
GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
IndexOf(XmlAnyElementAttribute)

Gets the index of the specified XmlAnyElementAttribute.

Insert(Int32, XmlAnyElementAttribute)

Inserts an XmlAnyElementAttribute into the collection at the specified index.

MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
OnClear()

Performs additional custom processes when clearing the contents of the CollectionBase instance.

(Inherited from CollectionBase)
OnClearComplete()

Performs additional custom processes after clearing the contents of the CollectionBase instance.

(Inherited from CollectionBase)
OnInsert(Int32, Object)

Performs additional custom processes before inserting a new element into the CollectionBase instance.

(Inherited from CollectionBase)
OnInsertComplete(Int32, Object)

Performs additional custom processes after inserting a new element into the CollectionBase instance.

(Inherited from CollectionBase)
OnRemove(Int32, Object)

Performs additional custom processes when removing an element from the CollectionBase instance.

(Inherited from CollectionBase)
OnRemoveComplete(Int32, Object)

Performs additional custom processes after removing an element from the CollectionBase instance.

(Inherited from CollectionBase)
OnSet(Int32, Object, Object)

Performs additional custom processes before setting a value in the CollectionBase instance.

(Inherited from CollectionBase)
OnSetComplete(Int32, Object, Object)

Performs additional custom processes after setting a value in the CollectionBase instance.

(Inherited from CollectionBase)
OnValidate(Object)

Performs additional custom processes when validating a value.

(Inherited from CollectionBase)
Remove(XmlAnyElementAttribute)

Removes the specified XmlAnyElementAttribute from the collection.

RemoveAt(Int32)

Removes the IList item at the specified index.

RemoveAt(Int32)

Removes the element at the specified index of the CollectionBase instance. This method is not overridable.

(Inherited from CollectionBase)
ToString()

Returns a string that represents the current object.

(Inherited from Object)

Explicit Interface Implementations

ICollection.CopyTo(Array, Int32)

Copies the elements of the ICollection to an array, starting at a particular index.

ICollection.CopyTo(Array, Int32)

Copies the entire CollectionBase to a compatible one-dimensional Array, starting at the specified index of the target array.

(Inherited from CollectionBase)
ICollection.IsSynchronized

Gets a value indicating whether access to the ICollection is synchronized (thread safe).

ICollection.IsSynchronized

Gets a value indicating whether access to the CollectionBase is synchronized (thread safe).

(Inherited from CollectionBase)
ICollection.SyncRoot

Gets an object that can be used to synchronize access to the ICollection.

ICollection.SyncRoot

Gets an object that can be used to synchronize access to the CollectionBase.

(Inherited from CollectionBase)
IList.Add(Object)

Adds an item to the IList.

IList.Add(Object)

Adds an object to the end of the CollectionBase.

(Inherited from CollectionBase)
IList.Contains(Object)

Determines whether the IList contains a specific value.

IList.Contains(Object)

Determines whether the CollectionBase contains a specific element.

(Inherited from CollectionBase)
IList.IndexOf(Object)

Determines the index of a specific item in the IList.

IList.IndexOf(Object)

Searches for the specified Object and returns the zero-based index of the first occurrence within the entire CollectionBase.

(Inherited from CollectionBase)
IList.Insert(Int32, Object)

Inserts an item to the IList at the specified index.

IList.Insert(Int32, Object)

Inserts an element into the CollectionBase at the specified index.

(Inherited from CollectionBase)
IList.IsFixedSize

Gets a value indicating whether the IList has a fixed size.

IList.IsFixedSize

Gets a value indicating whether the CollectionBase has a fixed size.

(Inherited from CollectionBase)
IList.IsReadOnly

Gets a value indicating whether the IList is read-only.

IList.IsReadOnly

Gets a value indicating whether the CollectionBase is read-only.

(Inherited from CollectionBase)
IList.Item[Int32]

Gets or sets the element at the specified index.

IList.Item[Int32]

Gets or sets the element at the specified index.

(Inherited from CollectionBase)
IList.Remove(Object)

Removes the first occurrence of a specific object from the IList.

IList.Remove(Object)

Removes the first occurrence of a specific object from the CollectionBase.

(Inherited from CollectionBase)

Extension Methods

Cast<TResult>(IEnumerable)

Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Enables parallelization of a query.

AsQueryable(IEnumerable)

Converts an IEnumerable to an IQueryable.

Applies to