XmlAnyElementAttribute XmlAnyElementAttribute XmlAnyElementAttribute XmlAnyElementAttribute Class

Определение

Указывает, что член (поле, возвращающее массив объектов XmlElement или XmlNode) содержит объекты, представляющие любые элементы XML, не имеющие соответствующего члена в сериализуемом или десериализуемом объекте.Specifies that the member (a field that returns an array of XmlElement or XmlNode objects) contains objects that represent any XML element that has no corresponding member in the object being serialized or deserialized.

public ref class XmlAnyElementAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
[System.AttributeUsage(System.AttributeTargets.Property | System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlAnyElementAttribute : Attribute
type XmlAnyElementAttribute = class
    inherit Attribute
Public Class XmlAnyElementAttribute
Inherits Attribute
Наследование
XmlAnyElementAttributeXmlAnyElementAttributeXmlAnyElementAttributeXmlAnyElementAttribute
Атрибуты

Примеры

В следующем примере применяется XmlAnyElementAttribute к полю с именем AllElements , возвращающий массив XmlElement объектов.The following example applies the XmlAnyElementAttribute to a field named AllElements that returns an array of XmlElement objects.

public ref class XClass
{
public:

   /* Apply the XmlAnyElementAttribute to a field returning an array
      of XmlElement objects. */

   [XmlAnyElement]
   array<XmlElement^>^AllElements;
};

public ref class Test
{
public:
   void DeserializeObject( String^ filename )
   {
      // Create an XmlSerializer.
      XmlSerializer^ mySerializer = gcnew XmlSerializer( XClass::typeid );

      // To read a file, a FileStream is needed.
      FileStream^ fs = gcnew FileStream( filename,FileMode::Open );

      // Deserialize the class.
      XClass^ x = dynamic_cast<XClass^>(mySerializer->Deserialize( fs ));

      // Read the element names and values.
      System::Collections::IEnumerator^ myEnum = x->AllElements->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         XmlElement^ xel = safe_cast<XmlElement^>(myEnum->Current);
         Console::WriteLine( "{0}: {1}", xel->LocalName, xel->Value );
      }
   }
};

int main()
{
   Test^ t = gcnew Test;
   t->DeserializeObject( "XFile.xml" );
}
public class XClass
{
   /* Apply the XmlAnyElementAttribute to a field returning an array
   of XmlElement objects. */
   [XmlAnyElement]
   public XmlElement[] AllElements;
}

public class Test
{
   public static void Main()
   {
      Test t = new Test();
      t.DeserializeObject("XFile.xml");
   }

   private void DeserializeObject(string filename)
   {
      // Create an XmlSerializer.
      XmlSerializer mySerializer = new XmlSerializer(typeof(XClass));

      // To read a file, a FileStream is needed.
      FileStream fs = new FileStream(filename, FileMode.Open);

      // Deserialize the class.
      XClass x = (XClass) mySerializer.Deserialize(fs);

      // Read the element names and values.
      foreach(XmlElement xel in x.AllElements)
         Console.WriteLine(xel.LocalName + ": " + xel.Value);
   }
}
Public Class XClass
    ' Apply the XmlAnyElementAttribute to a field returning an array
    ' of XmlElement objects.
    <XmlAnyElement()> Public AllElements() As XmlElement
End Class 'XClass


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        t.DeserializeObject("XFile.xml")
    End Sub 'Main
    
    
    Private Sub DeserializeObject(filename As String)
        ' Create an XmlSerializer.
        Dim mySerializer As New XmlSerializer(GetType(XClass))
        
        ' To read a file, a FileStream is needed.
        Dim fs As New FileStream(filename, FileMode.Open)
        
        ' Deserialize the class.
        Dim x As XClass = CType(mySerializer.Deserialize(fs), XClass)
        
        ' Read the element names and values.
        Dim xel As XmlElement
        For Each xel In  x.AllElements
            Console.WriteLine((xel.LocalName & ": " & xel.Value))
        Next xel
    End Sub 'DeserializeObject
End Class 'Test 

Комментарии

Совет

При работе в переносимой библиотеке классов, например в Silverlight, Windows Phone или проект приложения Windows Store и вы используете .NET Framework 4.0.3 и выше, выполните XElement или XNode вместо XmlElement и XmlNode.When working in a portable class library, such as in Silverlight, Windows Phone or Windows Store App project, and you are using the .NET Framework 4.0.3 and above, use XElement or XNode in place of XmlElement and XmlNode.

Используйте XmlAnyElementAttribute должен содержать произвольные данные (в виде XML-элементов), которые можно отправить как часть XML-документа, такие как метаданные как часть документа.Use the XmlAnyElementAttribute to contain arbitrary data (as XML elements) that can be sent as part of an XML document, such as metadata sent as part of the document.

Применить XmlAnyElementAttribute полю, которое возвращает массив XmlElement или XmlNode объектов.Apply the XmlAnyElementAttribute to a field that returns an array of XmlElement or XmlNode objects. Это поле можно использовать двумя способами, в зависимости от того, объект сериализации или десериализации.Such a field can be used in two ways, depending on whether an object is being serialized or deserialized. При сериализации объекта создается в виде XML-элементов или узлов, несмотря на то, что они не имеют соответствующего члена (или элементов) в объекте сериализации.When serialized, the object is generated as XML elements or nodes, even though they have no corresponding member (or members) in the object being serialized. Если указать Name значение свойства при применении атрибута, все XmlElement или XmlNode вставленных в массив объектов должен иметь то же элемент имя и значение по умолчанию пространство имен, или создается исключение.If you specify a Name property value when applying the attribute, all XmlElement or XmlNode objects inserted into the array must have the same element name and default namespace, or an exception is thrown. Если задать Namespace значение свойства, необходимо задать Name , свойства и XmlElement или XmlNode объекты также должны иметь одинаковые значения имени и пространства имен.If you set the Namespace property value, you must set the Name property as well, and the XmlElement or XmlNode objects must also have the same name and namespace values. Если не Name значение указано, XmlElement или XmlNode объектов может иметь любое имя элемента.If no Name value is specified, the XmlElement or XmlNode objects can have any element name.

При вызове Deserialize метод XmlSerializer класс, все элементы, у которых нет соответствующего члена в Десериализуемый объект собираются в массиве.When you call the Deserialize method of the XmlSerializer class, all elements that do not have a corresponding member in the object being deserialized are collected in the array. После десериализации выполнения итерации по коллекции XmlElement элементов для обработки данных.After deserialization, iterate through the collection of XmlElement items to process the data. Если указать Name значение, массив содержит только XML-элементов с таким именем.If you specify a Name value, the array contains only XML elements with that name. Если вы не укажете Name значение, массив содержит все элементы, имеющие нет соответствующего члена в классе.If you do not specify a Name value, the array contains all elements that have no corresponding member in the class. Если класс содержит более одного поля, к которому применяется атрибут, используйте Name, или Name и Namespace свойства, чтобы различать содержимое массивов.If a class contains more than one field to which the attribute is applied, use the Name, or Name and Namespace properties to differentiate between the contents of the arrays. Если такой класс (с несколькими полями) также содержит поле, для которого не заданы значения свойств, заданные (другими словами, Name и Namespace) во время десериализации, этот массив содержит все неизвестные элементы XML, которые не содержатся в других массивах.If such a class (with multiple fields) also contains one field that has no differentiating property values set (in other words, Name and Namespace) during deserialization, this array contains any unknown XML elements that are not already contained in the other arrays. Если класс содержит более одного поля, не поддерживает различение Name, или Name и Namespace значение не задано, то поведение во время десериализации не определено.If a class contains more than one field that does not have a differentiating Name, or Name and Namespace value set, the behavior during deserialization is unspecified.

Можно также применить XmlAnyElementAttribute к полю, возвращающему XmlElement объекта.You can also apply the XmlAnyElementAttribute to a field that returns a single XmlElement object. Если сделать это, необходимо использовать свойства и методы XmlElement для рекурсивного выполнения итерации по неизвестные элементы.If you do so, you must use the properties and methods of the XmlElement class to recursively iterate through the unknown elements.

Можно применить несколько экземпляров XmlAnyElementAttribute к классу элемента, но каждый экземпляр должен иметь различные Name значение свойства.You can apply multiple instances of the XmlAnyElementAttribute to a class member, but each instance must have a distinct Name property value. Или, если же Name свойство имеет значение для каждого экземпляра, уникальным Namespace свойство должно иметь значение для каждого экземпляра.Or, if the same Name property is set for each instance, a distinct Namespace property value must be set for each instance.

UnknownNode И UnknownAttribute события XmlSerializer не возникнут, если применить XmlAnyElementAttribute к члену класса.The UnknownNode and UnknownAttribute events of the XmlSerializer do not occur if you apply the XmlAnyElementAttribute to a member of a class.

Примечание

Можно использовать слово XmlAnyElement в коде вместо более длинного XmlAnyElementAttribute.You can use the word XmlAnyElement in your code instead of the longer XmlAnyElementAttribute.

Дополнительные сведения об использовании атрибутов см. в разделе атрибуты.For more information about using attributes, see Attributes.

Конструкторы

XmlAnyElementAttribute() XmlAnyElementAttribute() XmlAnyElementAttribute() XmlAnyElementAttribute()

Инициализирует новый экземпляр класса XmlAnyElementAttribute.Initializes a new instance of the XmlAnyElementAttribute class.

XmlAnyElementAttribute(String) XmlAnyElementAttribute(String) XmlAnyElementAttribute(String) XmlAnyElementAttribute(String)

Инициализирует новый экземпляр класса XmlAnyElementAttribute и указывает имя XML-элемента, сгенерированного в документе XML.Initializes a new instance of the XmlAnyElementAttribute class and specifies the XML element name generated in the XML document.

XmlAnyElementAttribute(String, String) XmlAnyElementAttribute(String, String) XmlAnyElementAttribute(String, String) XmlAnyElementAttribute(String, String)

Инициализирует новый экземпляр класса XmlAnyElementAttribute и указывает имя XML-элемента, сгенерированного в документе XML, и его пространство имен XML.Initializes a new instance of the XmlAnyElementAttribute class and specifies the XML element name generated in the XML document and its XML namespace.

Свойства

Name Name Name Name

Возвращает или задает имя XML-элемента.Gets or sets the XML element name.

Namespace Namespace Namespace Namespace

Возвращает или задает пространство имен XML, созданное в документе XML.Gets or sets the XML namespace generated in the XML document.

Order Order Order Order

Возвращает или задает явный порядок сериализации или десериализации элементов.Gets or sets the explicit order in which the elements are serialized or deserialized.

TypeId TypeId TypeId TypeId

При реализации в производном классе возвращает уникальный идентификатор для этого Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Возвращает хэш-код для данного экземпляра.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

При переопределении в производном классе показывает, является ли значение данного экземпляра значением по умолчанию для производного класса.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые могут использоваться для получения сведений о типе интерфейса.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Применяется к

Дополнительно