Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Proprietà XmlAnyElementAttribute.Name

Ottiene o imposta il nome dell'elemento XML.

Spazio dei nomi:  System.Xml.Serialization
Assembly:  System.Xml (in System.Xml.dll)

public string Name { get; set; }

Valore proprietà

Tipo: System.String
Il nome dell'elemento XML.

EccezioneCondizione
InvalidOperationException

Il nome di elemento di un membro di matrice non corrisponde al nome di elemento specificato nella proprietà Name.

Se si specifica un valore della proprietà Name al momento dell'applicazione dell'attributo, tutti gli oggetti XmlElement o XmlNode inseriti nella matrice devono disporre dello stesso nome di elemento e spazio dei nomi predefinito. In caso contrario, verrà generata un'eccezione. Se si imposta il valore della proprietà Namespace, è necessario impostare anche la proprietà Name, assicurandosi che anche l'oggetto XmlElement o XmlNode abbia gli stessi valori di nome e spazio dei nomi. Se non si specifica alcun valore Name, all'oggetto XmlElement o XmlNode può essere assegnato qualsiasi nome di elemento.

Quando viene chiamato il metodo Deserialize della classe XmlSerializer, tutti gli attributi privi di membro corrispondente nell'oggetto da deserializzare vengono raccolti nella matrice. Se si specifica un valore di Name, la matrice conterrà soltanto elementi XML con tale nome. Se non si specifica un valore di Name, la matrice conterrà tutti gli elementi che non dispongono di un membro corrispondente nella classe. Se una classe contiene più campi ai quali è applicato l'attributo, utilizzare le proprietà Name e Namespace per differenziare il contenuto delle matrici. Se una classe con più campi contiene inoltre un campo per il quale non sono stati impostati valori di proprietà distintivi, ovvero Name e Namespace, durante la deserializzazione, questa matrice conterrà tutti gli elementi XML che non sono già presenti nelle altre matrici. Se si aggiungono più campi per i quali non è stato impostato un valore Name o Namespace distintivo, l'ultimo campo della classe conterrà tutti gli elementi sconosciuti che non sono già presenti nelle altre matrici e tutti gli altri campi verranno impostati su null.

È possibile applicare istanze multiple della classe XmlAnyElementAttribute a un membro di classe ma a ogni istanza deve essere assegnato un diverso valore della proprietà Name. In alternativa, se tutte le istanze hanno in comune la stessa proprietà Name, in ognuna di esse deve essere impostato un diverso valore della proprietà Namespace.


using System;
using System.Text;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Xml.Schema;


[XmlRoot(Namespace = "http://www.cohowinery.com")]
public class Group{
   public string GroupName;

   // This is for serializing Employee elements.
   [XmlAnyElement(Name = "Employee")]
   public XmlElement[] UnknownEmployees;

   // This is for serializing City elements.   
   [XmlAnyElement
   (Name = "City", 
   Namespace = "http://www.cpandl.com")]
   public XmlElement[] UnknownCity;

    // This one is for all other unknown elements.
   [XmlAnyElement]
   public XmlElement[] UnknownElements;
}

public class Test{
   static void Main(){
      Test t = new Test();
      t.SerializeObject("AnyElementArray.xml");
      t.DeserializeObject("AnyElementArray.xml");
      Console.WriteLine("Done");
   }

   private void SerializeObject(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group));
      // Create an XmlNamespaces to use.
      XmlSerializerNamespaces namespaces =
      new XmlSerializerNamespaces();
      namespaces.Add("c", "http://www.cohowinery.com");
      namespaces.Add("i", "http://www.cpandl.com");
      Group myGroup = new Group();
      // Create arrays of arbitrary XmlElement objects.
      // First create an XmlDocument, used to create the 
      // XmlElement objects.
      XmlDocument xDoc = new XmlDocument();

      // Create an array of Employee XmlElement objects.
      XmlElement El1 = xDoc.CreateElement("Employee", "http://www.cohowinery.com");
      El1.InnerText = "John";
      XmlElement El2 = xDoc.CreateElement("Employee", "http://www.cohowinery.com");
      El2.InnerText = "Joan";
      XmlElement El3 = xDoc.CreateElement("Employee", "http://www.cohowinery.com");
      El3.InnerText = "Jim";
      myGroup.UnknownEmployees= new XmlElement[]{El1, El2, El3};     

      // Create an array of City XmlElement objects.
      XmlElement inf1 = xDoc.CreateElement("City", "http://www.cpandl.com");
      inf1.InnerText = "Tokyo";
      XmlElement inf2 = xDoc.CreateElement("City", "http://www.cpandl.com");     
      inf2.InnerText = "New York";
      XmlElement inf3 = xDoc.CreateElement("City", "http://www.cpandl.com");     
      inf3.InnerText = "Rome";

      myGroup.UnknownCity = new XmlElement[]{inf1, inf2, inf3};

      XmlElement xEl1 = xDoc.CreateElement("bld");
      xEl1.InnerText = "42";
      XmlElement xEl2 = xDoc.CreateElement("Region");
      xEl2.InnerText = "West";
      XmlElement xEl3 = xDoc.CreateElement("type");
      xEl3.InnerText = "Technical";
      myGroup.UnknownElements = 
      	new XmlElement[]{xEl1,xEl2,xEl3};
      // Serialize the class, and close the TextWriter.
      TextWriter writer = new StreamWriter(filename);
      ser.Serialize(writer, myGroup, namespaces);
      writer.Close();

   }

   private void DeserializeObject(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group));
      FileStream fs = new FileStream(filename, FileMode.Open);
      Group myGroup;
      myGroup = (Group)ser.Deserialize(fs);
      fs.Close();
      foreach(XmlElement xEmp in myGroup.UnknownEmployees){
         Console.WriteLine(xEmp.LocalName + ": " + xEmp.InnerText);}
      foreach(XmlElement xCity in myGroup.UnknownCity){
         Console.WriteLine(xCity.LocalName + ": " + xCity.InnerText);}
      foreach(XmlElement xEl in myGroup.UnknownElements){
         Console.WriteLine(xEl.LocalName + ": " + xEl.InnerText);}
   }
 }



.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft