XmlAnyAttributeAttribute 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
멤버(XmlAttribute 개체의 배열을 반환하는 필드)가 XML 특성을 포함할 수 있도록 지정합니다.
public ref class XmlAnyAttributeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)]
public class XmlAnyAttributeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)]
public class XmlAnyAttributeAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)>]
type XmlAnyAttributeAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)>]
type XmlAnyAttributeAttribute = class
inherit Attribute
Public Class XmlAnyAttributeAttribute
Inherits Attribute
- 상속
- 특성
예제
다음 예제에서는 알 수 없는 모든 특성을 개체의 XmlAttribute 배열로 수집합니다. 이 예제를 시도하려면 다음 XML을 포함하는 라는 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.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Collections;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
public ref class Group
{
public:
String^ GroupName;
// The UnknownAttributes array will be used to collect all unknown
// attributes found when deserializing.
[XmlAnyAttributeAttribute]
array<XmlAttribute^>^XAttributes;
};
void SerializeObject( String^ filename, Object^ g )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
TextWriter^ writer = gcnew StreamWriter( filename );
ser->Serialize( writer, g );
writer->Close();
}
void DeserializeObject( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
// A FileStream is needed to read the XML document.
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
Group^ g = safe_cast<Group^>(ser->Deserialize( fs ));
fs->Close();
// Write out the data, including unknown attributes.
Console::WriteLine( g->GroupName );
Console::WriteLine( "Number of unknown attributes: {0}", g->XAttributes->Length );
for ( IEnumerator ^ e = g->XAttributes->GetEnumerator(); e->MoveNext(); )
{
XmlAttribute^ xAtt = safe_cast<XmlAttribute^>(e->Current);
Console::WriteLine( "{0}: {1}", xAtt->Name, xAtt->InnerXml );
}
SerializeObject( "AttributesAdded.xml", g );
}
int main()
{
// Deserialize the file containing unknown attributes.
DeserializeObject( "UnknownAttributes.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
public class Group{
public string GroupName;
// The UnknownAttributes array will be used to collect all unknown
// attributes found when deserializing.
[XmlAnyAttribute]
public XmlAttribute[]XAttributes;
}
public class Test{
static void Main(){
Test t = new Test();
// Deserialize the file containing unknown attributes.
t.DeserializeObject("UnknownAttributes.xml");
}
private void DeserializeObject(string filename){
XmlSerializer ser = new XmlSerializer(typeof(Group));
// A FileStream is needed to read the XML document.
FileStream fs = new FileStream(filename, FileMode.Open);
Group g = (Group) ser.Deserialize(fs);
fs.Close();
// Write out the data, including unknown attributes.
Console.WriteLine(g.GroupName);
Console.WriteLine("Number of unknown attributes: " +
g.XAttributes.Length);
foreach(XmlAttribute xAtt in g.XAttributes){
Console.WriteLine(xAtt.Name + ": " + xAtt.InnerXml);
}
// Serialize the object again with the attributes added.
this.SerializeObject("AttributesAdded.xml",g);
}
private void SerializeObject(string filename, object g){
XmlSerializer ser = new XmlSerializer(typeof(Group));
TextWriter writer = new StreamWriter(filename);
ser.Serialize(writer, g);
writer.Close();
}
}
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml
Public Class Group
Public GroupName As String
' The UnknownAttributes array will be used to collect all unknown
' attributes found when deserializing.
<XmlAnyAttribute> _
Public UnknownAttributes()As XmlAttribute
End Class
Public Class Test
Shared Sub Main()
Dim t As Test = New Test()
' Deserialize the file containing unknown attributes.
t.DeserializeObject("UnknownAttributes.xml")
End Sub
Private Sub DeserializeObject(filename As String)
Dim ser As XmlSerializer = New XmlSerializer(GetType(Group))
' 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()
' Write out the data, including unknown attributes.
Console.WriteLine(g.GroupName)
Console.WriteLine("Number of unknown attributes: " & _
g.UnknownAttributes.Length)
Dim xAtt As XmlAttribute
for each xAtt in g.UnknownAttributes
Console.WriteLine(xAtt.Name & ": " & xAtt.InnerXml)
Next
' Serialize the object again with the attributes added.
Me.SerializeObject("AttributesAdded.xml",g)
End Sub
Private Sub SerializeObject(filename As String, g As object)
Dim ser As XmlSerializer = New XmlSerializer(GetType(Group))
DIm writer As TextWriter = New StreamWriter(filename)
ser.Serialize(writer, g)
writer.Close()
End Sub
End Class
설명
을 XmlAnyAttributeAttribute 사용하여 XML 문서의 일부로 전송되는 임의의 데이터(예: 문서의 일부로 전송된 메타데이터)를 XML 특성으로 포함합니다.
XmlAnyAttributeAttribute 또는 XmlNode 개체의 배열을 반환하는 필드에 를 XmlAttribute 적용합니다. 클래스의 Deserialize 메서드가 XmlSerializer 호출되면 역직렬화되는 클래스에 해당 멤버가 없는 모든 XML 특성이 배열에서 수집됩니다. 역직렬화 후에는 항목 컬렉션을 XmlAttribute 반복하여 데이터를 처리할 수 있습니다.
UnknownNode 클래스의 멤버에 를 XmlSerializer 적용 XmlAnyAttributeAttribute 하면 의 및 UnknownAttribute 이벤트가 발생하지 않습니다.
참고
더 긴 XmlAnyAttributeAttribute대신 코드에서 단어를 XmlAnyAttribute
사용할 수 있습니다.
특성을 사용 하는 방법에 대 한 자세한 내용은 참조 하세요. 특성합니다.
생성자
XmlAnyAttributeAttribute() |
XmlAnyAttributeAttribute 클래스의 새 인스턴스를 만듭니다. |
속성
TypeId |
파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다. (다음에서 상속됨 Attribute) |
메서드
Equals(Object) |
이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다. (다음에서 상속됨 Attribute) |
GetHashCode() |
이 인스턴스의 해시 코드를 반환합니다. (다음에서 상속됨 Attribute) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
IsDefaultAttribute() |
파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다. (다음에서 상속됨 Attribute) |
Match(Object) |
파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (다음에서 상속됨 Attribute) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다. (다음에서 상속됨 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다. (다음에서 상속됨 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1). (다음에서 상속됨 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다. (다음에서 상속됨 Attribute) |
적용 대상
추가 정보
.NET