XmlAnyElementAttribute.Name 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
XML 요소 이름을 가져오거나 설정합니다.
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
속성 값
XML 요소의 이름입니다.
예외
배열 멤버의 요소 이름이 Name 속성으로 지정한 요소 이름과 일치하지 않는 경우
예제
#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
설명
특성을 적용할 때 속성 값을 지정 Name 하는 경우 배열에 삽입된 모든 XmlElement 개체 또는 XmlNode 요소 이름과 기본 네임스페이스가 동일해야 합니다. 그렇지 않으면 예외가 throw됩니다. 속성 값을 설정하는 Namespace 경우 속성도 설정 Name 해야 하며 XmlElement , 또는 XmlNode 개체의 이름과 네임스페이스 값도 같아야 합니다. 값이 지정되지 않은 Name 경우 또는 XmlNode 개체는 XmlElement 요소 이름을 가질 수 있습니다.
클래스의 메서드를 Deserialize XmlSerializer 호출하면 역직렬화되는 개체에 해당 멤버가 없는 모든 특성이 배열에서 수집됩니다. 값을 지정 Name 하면 배열에 해당 이름의 XML 요소만 포함됩니다. 값을 지정 Name 하지 않으면 클래스에 해당 멤버가 없는 모든 요소가 배열에 포함됩니다. 클래스에 특성이 적용되는 필드가 둘 이상 포함된 경우 해당 필드와 Namespace 속성을 사용하여 Name 배열의 내용을 구분합니다. 이러한 클래스(여러 필드 포함)에도 역직렬화 중에 차별화 속성 값 집합(즉, Name ) Namespace이 없는 하나의 필드가 포함된 경우 배열에는 다른 배열에 아직 포함되지 않은 XML 요소가 포함됩니다. 구분 Name 또는 Namespace 값 집합이 없는 필드를 둘 이상 추가하는 경우 클래스의 마지막 필드에는 다른 배열에 아직 포함되지 않은 알 수 없는 요소가 모두 포함되고 다른 필드는 모두로 null
설정됩니다.
클래스 멤버에 여러 인스턴스를 XmlAnyElementAttribute 적용할 수 있지만 각 인스턴스에는 고유한 Name 속성 값이 있어야 합니다. 또는 각 인스턴스에 대해 동일한 Name 속성이 설정된 경우 각 인스턴스에 대해 고유한 Namespace 속성 값을 설정해야 합니다.