XmlAttributeEventArgs Classe

Definição

Fornece dados para o evento de UnknownAttribute .

public ref class XmlAttributeEventArgs : EventArgs
public class XmlAttributeEventArgs : EventArgs
type XmlAttributeEventArgs = class
    inherit EventArgs
Public Class XmlAttributeEventArgs
Inherits EventArgs
Herança
XmlAttributeEventArgs

Exemplos

O exemplo a seguir desserializa uma classe chamada Group de um arquivo chamado UnknownAttributes.xml. Sempre que um elemento é encontrado no arquivo que não tem nenhum membro correspondente na classe , o UnknownAttribute evento ocorre. Para experimentar o exemplo, cole o código XML a seguir em um arquivo chamado UnknownAttributes.xml.

<?xml version="1.0" encoding="utf-8"?>  
<Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" GroupType = 'Technical' GroupNumber = '42' GroupBase = 'Red'>  
  <GroupName>MyGroup</GroupName>  
</Group>  
#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
using namespace System::Xml::Schema;

public ref class Group
{
public:
   String^ GroupName;
};

public ref class Test
{
public:
   static void main()
   {
      Test^ t = gcnew Test;
      
      // Deserialize the file containing unknown elements.
      t->DeserializeObject( "UnknownAttributes.xml" );
   }

private:
   void Serializer_UnknownAttribute( Object^ sender, XmlAttributeEventArgs^ e )
   {
      Console::WriteLine( "Unknown Attribute" );
      Console::WriteLine( "\t{0} {1}", e->Attr->Name, e->Attr->InnerXml );
      Console::WriteLine( "\t LineNumber: {0}", e->LineNumber );
      Console::WriteLine( "\t LinePosition: {0}", e->LinePosition );
      Group^ x = dynamic_cast<Group^>(e->ObjectBeingDeserialized);
      Console::WriteLine( x->GroupName );
      Console::WriteLine( sender );
   }

   void DeserializeObject( String^ filename )
   {
      XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );

      // Add a delegate to handle unknown element events.
      ser->UnknownAttribute += gcnew XmlAttributeEventHandler( this, &Test::Serializer_UnknownAttribute );

      // A FileStream is needed to read the XML document.
      FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
      Group^ g = dynamic_cast<Group^>(ser->Deserialize( fs ));
      fs->Close();
   }
};

int main()
{
   Test::main();
}
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Xml.Schema;

public class Group{
   public string GroupName;
}

public class Test{
   static void Main(){
      Test t = new Test();
      // Deserialize the file containing unknown elements.
      t.DeserializeObject("UnknownAttributes.xml");
   }
   private void Serializer_UnknownAttribute(object sender, XmlAttributeEventArgs e){
      Console.WriteLine("Unknown Attribute");
      Console.WriteLine("\t" + e.Attr.Name + " " + e.Attr.InnerXml);
      Console.WriteLine("\t LineNumber: " + e.LineNumber);
      Console.WriteLine("\t LinePosition: " + e.LinePosition);

      Group x  = (Group) e.ObjectBeingDeserialized;
      Console.WriteLine (x.GroupName);
      Console.WriteLine (sender.ToString());
   }
   private void DeserializeObject(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group));
      // Add a delegate to handle unknown element events.
      ser.UnknownAttribute+=new XmlAttributeEventHandler(Serializer_UnknownAttribute);
      // A FileStream is needed to read the XML document.
     FileStream fs = new FileStream(filename, FileMode.Open);
     Group g = (Group) ser.Deserialize(fs);
     fs.Close();
    }
}
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml
Imports System.Xml.Schema

Public Class Group
   Public GroupName As String 
End Class

Public Class Test
   Shared Sub Main()
      Dim t As Test = new Test()
      ' Deserialize the file containing unknown elements.
      t.DeserializeObject("UnknownAttributes.xml")
   End Sub

   Private Sub Serializer_UnknownAttribute _
   (sender As Object , e As XmlAttributeEventArgs)
      Console.WriteLine("Unknown Attribute")
      Console.WriteLine(ControlChars.Tab & e.Attr.Name + " " & e.Attr.InnerXml)
      Console.WriteLine(ControlChars.Tab & e.LineNumber & ":"  & e.LineNumber)
      Console.WriteLine(ControlChars.Tab & e.LinePosition & ":"   & e.LinePosition)
      
      Dim x As Group = CType( e.ObjectBeingDeserialized, Group)
      Console.WriteLine (x.GroupName)
      Console.WriteLine (sender.ToString())
   End Sub
   
   Private Sub DeserializeObject(filename As String)
      Dim ser As XmlSerializer = new XmlSerializer(GetType(Group))
      ' Add a delegate to handle unknown element events.
      AddHandler ser.UnknownAttribute, _
      AddressOf Serializer_UnknownAttribute 
      ' 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()
   End Sub
End Class

Comentários

Para obter mais informações sobre como lidar com eventos, consulte Visão geral de eventos.

O UnknownAttribute evento ocorre somente quando você chama o Deserialize método .

Propriedades

Attr

Obtém um objeto que representa o atributo XML desconhecido.

ExpectedAttributes

Obtém uma lista delimitada por vírgulas de nomes do atributo XML que deve estar em uma instância de documento XML.

LineNumber

Obtém o número de linha do atributo XML desconhecido.

LinePosition

Obtém a posição na linha do atributo XML desconhecido.

ObjectBeingDeserialized

Obtém o objeto que está sendo desserializado.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também