XmlAnyElementAttribute.Name Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Gets or sets the XML element name.
public:
property System::String ^ Name { System::String ^ get(); void set(System::String ^ value); };
public string Name { get; set; }
member this.Name : string with get, set
Public Property Name As String
Property Value
The name of the XML element.
Exceptions
The element name of an array member does not match the element name specified by the Name property.
Examples
#using <system.dll>
#using <system.xml.dll>
using namespace System;
using namespace System::Text;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
using namespace System::Xml::Schema;
[XmlRoot(Namespace="http://www.cohowinery.com")]
public ref class Group
{
public:
String^ GroupName;
// This is for serializing Employee elements.
[XmlAnyElement(Name="Employee")]
array<XmlElement^>^UnknownEmployees;
// This is for serializing City elements.
[XmlAnyElement
(Name="City",
Namespace="http://www.cpandl.com")]
array<XmlElement^>^UnknownCity;
// This one is for all other unknown elements.
[XmlAnyElement]
array<XmlElement^>^UnknownElements;
};
void SerializeObject( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
// Create an XmlNamespaces to use.
XmlSerializerNamespaces^ namespaces = gcnew XmlSerializerNamespaces;
namespaces->Add( "c", "http://www.cohowinery.com" );
namespaces->Add( "i", "http://www.cpandl.com" );
Group^ myGroup = gcnew Group;
// Create arrays of arbitrary XmlElement objects.
// First create an XmlDocument, used to create the
// XmlElement objects.
XmlDocument^ xDoc = gcnew 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";
array<XmlElement^>^employees = {El1,El2,El3};
myGroup->UnknownEmployees = employees;
// 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";
array<XmlElement^>^cities = {inf1,inf2,inf3};
myGroup->UnknownCity = cities;
XmlElement^ xEl1 = xDoc->CreateElement( "bld" );
xEl1->InnerText = "42";
XmlElement^ xEl2 = xDoc->CreateElement( "Region" );
xEl2->InnerText = "West";
XmlElement^ xEl3 = xDoc->CreateElement( "type" );
xEl3->InnerText = "Technical";
array<XmlElement^>^elements = {xEl1,xEl2,xEl3};
myGroup->UnknownElements = elements;
// Serialize the class, and close the TextWriter.
TextWriter^ writer = gcnew StreamWriter( filename );
ser->Serialize( writer, myGroup, namespaces );
writer->Close();
}
void DeserializeObject( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
Group^ myGroup;
myGroup = safe_cast<Group^>(ser->Deserialize( fs ));
fs->Close();
for ( int i = 0; i < myGroup->UnknownEmployees->Length; ++i )
{
XmlElement^ xEmp = myGroup->UnknownEmployees[ i ];
Console::WriteLine( "{0}: {1}", xEmp->LocalName, xEmp->InnerText );
}
for ( int i = 0; i < myGroup->UnknownCity->Length; ++i )
{
XmlElement^ xCity = myGroup->UnknownCity[ i ];
Console::WriteLine( "{0}: {1}", xCity->LocalName, xCity->InnerText );
}
for ( int i = 0; i < myGroup->UnknownElements->Length; ++i )
{
XmlElement^ xEmp = myGroup->UnknownElements[ i ];
Console::WriteLine( "{0}: {1}", xEmp->LocalName, xEmp->InnerText );
}
}
int main()
{
SerializeObject( "AnyElementArray.xml" );
DeserializeObject( "AnyElementArray.xml" );
Console::WriteLine( "Done" );
}
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);}
}
}
Imports System.Text
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml
Imports System.Xml.Schema
<XmlRoot(Namespace:= "http://www.cohowinery.com")> _
Public Class Group
Public GroupName As String
' This is for serializing Employee elements.
<XmlAnyElement(Name:="Employee")> _
Public UnknownEmployees() As XmlElement
' This is for serializing City elements.
<XmlAnyElement _
(Name:="City", _
Namespace:="http://www.cpandl.com")> _
Public UnknownCity() As XmlElement
' This one is for all other unknown elements.
<XmlAnyElement> _
Public UnknownElements() As XmlElement
End Class
Public Class Test
Shared Sub Main()
Dim t As Test = New Test()
t.SerializeObject("AnyElementArray.xml")
t.DeserializeObject("AnyElementArray.xml")
Console.WriteLine("Done")
End Sub
Private Sub SerializeObject(filename As String)
Dim ser As XmlSerializer = _
New XmlSerializer(GetType(Group))
' Create an XmlNamespaces to use.
Dim namespaces As XmlSerializerNamespaces = _
New XmlSerializerNamespaces()
namespaces.Add("c", "http://www.cohowinery.com")
namespaces.Add("i", "http://www.cpandl.com")
Dim myGroup As Group = New Group()
' Create arrays of arbitrary XmlElement objects.
' First create an XmlDocument, used to create the
' XmlElement objects.
Dim xDoc As XmlDocument = New XmlDocument()
' Create an array of Employee XmlElement objects.
Dim El1 As XmlElement = xDoc.CreateElement("Employee", "http://www.cohowinery.com")
El1.InnerText = "John"
Dim El2 As XmlElement = xDoc.CreateElement("Employee", "http://www.cohowinery.com")
El2.InnerText = "Joan"
Dim El3 As XmlElement = xDoc.CreateElement("Employee", "http://www.cohowinery.com")
El3.InnerText = "Jim"
myGroup.UnknownEmployees= New XmlElement(){El1, El2, El3}
' Create an array of City XmlElement objects.
Dim inf1 As XmlElement = xDoc.CreateElement("City", "http://www.cpandl.com")
inf1.InnerText = "Tokyo"
Dim inf2 As XmlElement = xDoc.CreateElement("City", "http://www.cpandl.com")
inf2.InnerText = "New York"
Dim inf3 As XmlElement = xDoc.CreateElement("City", "http://www.cpandl.com")
inf3.InnerText = "Rome"
myGroup.UnknownCity = New XmlElement(){inf1, inf2, inf3}
Dim xEl1 As XmlElement = xDoc.CreateElement("bld")
xEl1.InnerText = "42"
Dim xEl2 As XmlElement = xDoc.CreateElement("Region")
xEl2.InnerText = "West"
Dim xEl3 As XmlElement = xDoc.CreateElement("type")
xEl3.InnerText = "Technical"
myGroup.UnknownElements = _
New XmlElement(){xEl1,xEl2,xEl3}
' Serialize the class, and close the TextWriter.
Dim writer As TextWriter = New StreamWriter(filename)
ser.Serialize(writer, myGroup, namespaces)
writer.Close()
End Sub
Private Sub DeserializeObject(filename As String)
Dim ser As XmlSerializer = _
New XmlSerializer(GetType(Group))
Dim fs As FileStream = New FileStream(filename, FileMode.Open)
Dim myGroup As Group
myGroup = CType(ser.Deserialize(fs), Group)
fs.Close()
Dim xEmp As XmlElement
for each xEmp in myGroup.UnknownEmployees
Console.WriteLine(xEmp.LocalName & ": " & xEmp.InnerText)
Next
Dim xCity As XmlElement
for each xCity in myGroup.UnknownCity
Console.WriteLine(xCity.LocalName & ": " & xCity.InnerText)
Next
Dim xEl As XmlElement
for each xEl in myGroup.UnknownElements
Console.WriteLine(xEl.LocalName & ": " & xEl.InnerText)
Next
End Sub
End Class
Remarks
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. 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. If no Name value is specified, the XmlElement or XmlNode objects can have any element name.
When you call the Deserialize method of the XmlSerializer class, all attributes that do not have a corresponding member in the object being deserialized are collected in the array. If you specify a Name value, the array contains only XML elements with that name. If you do not specify a Name value, the array contains all elements that have no corresponding member in the class. If a class contains more than one field to which the attribute is applied, use the Name and Namespace properties to differentiate between the contents of the arrays. If such a class (with multiple fields) also contains one field that has no differentiating property values set (that is, Name and Namespace) during deserialization, the array contains any XML elements that are not already contained in the other arrays. If you add more than one field that does not have a differentiating Name or Namespace value set, the last field in the class contains all unknown elements that are not already contained in the other arrays, and any other fields are set to null
.
You can apply multiple instances of the XmlAnyElementAttribute to a class member, but each instance must have a distinct Name property value. Or, if the same Name property is set for each instance, a distinct Namespace property value must be set for each instance.