XmlTextAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt dem XmlSerializer an, dass der Member beim Serialisieren oder Deserialisieren der Klasse, in der er enthalten ist, als XML-Text behandelt werden muss.
public ref class XmlTextAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)]
public class XmlTextAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)>]
type XmlTextAttribute = class
inherit Attribute
Public Class XmlTextAttribute
Inherits Attribute
- Vererbung
- Attribute
Beispiele
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::Xml::Serialization;
using namespace System::IO;
public ref class Group1
{
public:
// The XmlTextAttribute with type set to string informs the
// XmlSerializer that strings should be serialized as XML text.
[XmlText(String::typeid)]
[XmlElement(Int32::typeid)]
[XmlElement(Double::typeid)]
array<Object^>^All;
Group1()
{
array<Object^>^temp = {321,"One",2,3.0,"Two"};
All = temp;
}
};
public enum class GroupType
{
Small, Medium, Large
};
public ref class Group2
{
public:
[XmlText(Type=GroupType::typeid)]
GroupType Type;
};
public ref class Group3
{
public:
[XmlText(Type=DateTime::typeid)]
DateTime CreationTime;
Group3()
{
CreationTime = DateTime::Now;
}
};
public ref class Test
{
public:
static void main()
{
Test^ t = gcnew Test;
t->SerializeArray( "XmlText1.xml" );
t->SerializeEnum( "XmlText2.xml" );
t->SerializeDateTime( "XmlText3.xml" );
}
private:
void SerializeArray( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group1::typeid );
Group1^ myGroup1 = gcnew Group1;
TextWriter^ writer = gcnew StreamWriter( filename );
ser->Serialize( writer, myGroup1 );
writer->Close();
}
void SerializeEnum( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group2::typeid );
Group2^ myGroup = gcnew Group2;
myGroup->Type = GroupType::Medium;
TextWriter^ writer = gcnew StreamWriter( filename );
ser->Serialize( writer, myGroup );
writer->Close();
}
void SerializeDateTime( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group3::typeid );
Group3^ myGroup = gcnew Group3;
TextWriter^ writer = gcnew StreamWriter( filename );
ser->Serialize( writer, myGroup );
writer->Close();
}
};
int main()
{
Test::main();
}
using System;
using System.Xml.Serialization;
using System.IO;
public class Group1{
// The XmlTextAttribute with type set to string informs the
// XmlSerializer that strings should be serialized as XML text.
[XmlText(typeof(string))]
[XmlElement(typeof(int))]
[XmlElement(typeof(double))]
public object [] All= new object []{321, "One", 2, 3.0, "Two" };
}
public class Group2{
[XmlText(Type = typeof(GroupType))]
public GroupType Type;
}
public enum GroupType{
Small,
Medium,
Large
}
public class Group3{
[XmlText(Type=typeof(DateTime))]
public DateTime CreationTime = DateTime.Now;
}
public class Test{
static void Main(){
Test t = new Test();
t.SerializeArray("XmlText1.xml");
t.SerializeEnum("XmlText2.xml");
t.SerializeDateTime("XmlText3.xml");
}
private void SerializeArray(string filename){
XmlSerializer ser = new XmlSerializer(typeof(Group1));
Group1 myGroup1 = new Group1();
TextWriter writer = new StreamWriter(filename);
ser.Serialize(writer, myGroup1);
writer.Close();
}
private void SerializeEnum(string filename){
XmlSerializer ser = new XmlSerializer(typeof(Group2));
Group2 myGroup = new Group2();
myGroup.Type = GroupType.Medium;
TextWriter writer = new StreamWriter(filename);
ser.Serialize(writer, myGroup);
writer.Close();
}
private void SerializeDateTime(string filename){
XmlSerializer ser = new XmlSerializer(typeof(Group3));
Group3 myGroup = new Group3();
TextWriter writer = new StreamWriter(filename);
ser.Serialize(writer, myGroup);
writer.Close();
}
}
Imports System.Xml.Serialization
Imports System.IO
Public Class Group1
' The XmlTextAttribute with type set to String informs the
' XmlSerializer that strings should be serialized as XML text.
<XmlText(GetType(String)), _
XmlElement(GetType(integer)), _
XmlElement(GetType(double))> _
public All () As Object = _
New Object (){321, "One", 2, 3.0, "Two" }
End Class
Public Class Group2
<XmlText(GetType(GroupType))> _
public Type As GroupType
End Class
Public Enum GroupType
Small
Medium
Large
End Enum
Public Class Group3
<XmlText(GetType(DateTime))> _
Public CreationTime As DateTime = DateTime.Now
End Class
Public Class Test
Shared Sub Main()
Dim t As Test = New Test()
t.SerializeArray("XmlText1.xml")
t.SerializeEnum("XmlText2.xml")
t.SerializeDateTime("XmlText3.xml")
End Sub
Private Sub SerializeArray(filename As String)
Dim ser As XmlSerializer = New XmlSerializer(GetType(Group1))
Dim myGroup1 As Group1 = New Group1()
Dim writer As TextWriter = New StreamWriter(filename)
ser.Serialize(writer, myGroup1)
writer.Close()
End Sub
Private Sub SerializeEnum(filename As String)
Dim ser As XmlSerializer = New XmlSerializer(GetType(Group2))
Dim myGroup As Group2 = New Group2()
myGroup.Type = GroupType.Medium
Dim writer As TextWriter = New StreamWriter(filename)
ser.Serialize(writer, myGroup)
writer.Close()
End Sub
Private Sub SerializeDateTime(filename As String)
Dim ser As XmlSerializer = new XmlSerializer(GetType(Group3))
Dim myGroup As Group3 = new Group3()
Dim writer As TextWriter = new StreamWriter(filename)
ser.Serialize(writer, myGroup)
writer.Close()
End Sub
End Class
Hinweise
Gehört XmlTextAttribute zu einer Familie von Attributen, die steuert, wie ein XmlSerializer Objekt serialisiert und deserialisiert wird (über seine Serialize Methoden und Deserialize ). Eine vollständige Liste ähnlicher Attribute finden Sie unter Attribute, die die XML-Serialisierung steuern.
Nur eine Instanz der XmlTextAttribute -Klasse kann in einer Klasse angewendet werden.
Sie können die XmlTextAttribute auf öffentliche Felder und öffentliche Lese-/Schreibeigenschaften anwenden, die primitive Und Enumerationstypen zurückgeben.
Sie können die XmlTextAttribute auf ein Feld oder eine Eigenschaft anwenden, die ein Array von Zeichenfolgen zurückgibt. Sie können das Attribut auch auf ein Array vom Typ Object anwenden, aber Sie müssen die Type Eigenschaft auf Zeichenfolge festlegen. In diesem Fall werden alle in das Array eingefügten Zeichenfolgen als XML-Text serialisiert.
Kann XmlTextAttribute auch auf ein Feld angewendet werden, das ein - oder ein XmlNode Array von XmlNode -Objekten zurückgibt.
Standardmäßig serialisiert der XmlSerializer einen Klassenmember als XML-Element. Wenn Sie die XmlTextAttribute jedoch auf ein Element anwenden, übersetzt der XmlSerializer seinen Wert in XML-Text. Dies bedeutet, dass der Wert in den Inhalt eines XML-Elements codiert wird.
Das XML-Schemadefinitionstool (Xsd.exe) generiert gelegentlich die XmlTextAttribute beim Erstellen von Klassen aus einer XML-Schemadefinitionsdatei (XSD). Dies tritt auf, wenn das Schema einen complexType
mit gemischtem Inhalt enthält. In diesem Fall enthält die entsprechende Klasse einen Member, der ein Zeichenfolgenarray zurückgibt, auf das angewendet XmlTextAttribute wird. Wenn das Xml Schema Definition
Tool beispielsweise dieses Schema verarbeitet:
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace=""
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="LinkList" type="LinkList" />
<xs:complexType name="LinkList" mixed="true">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="id" type="xs:int" />
<xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="next" type="LinkList" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Die folgende Klasse wird generiert (zusätzliche Leerzeichen und Hinweise wurden entfernt):
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class LinkList
{
private int idField;
private string nameField;
private LinkList nextField;
private string[] textField;
public int id
{
get
{
return this.idField;
}
set
{
this.idField = value;
}
}
public string name
{
get
{
return this.nameField;
}
set
{
this.nameField = value;
}
}
public LinkList next
{
get
{
return this.nextField;
}
set
{
this.nextField = value;
}
}
[System.Xml.Serialization.XmlTextAttribute()]
public string[] Text
{
get
{
return this.textField;
}
set
{
this.textField = value;
}
}
}
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=False)> _
Partial Public Class LinkList
Private idField As Integer
Private nameField As String
Private nextField As LinkList
Private textField() As String
Public Property id() As Integer
Get
Return Me.idField
End Get
Set(ByVal value As Integer)
Me.idField = value
End Set
End Property
Public Property name() As String
Get
Return Me.nameField
End Get
Set(ByVal value As String)
Me.nameField = value
End Set
End Property
Public Property [next]() As LinkList
Get
Return Me.nextField
End Get
Set(ByVal value As LinkList)
Me.nextField = value
End Set
End Property
<System.Xml.Serialization.XmlTextAttribute()> _
Public Property Text() As String()
Get
Return Me.textField
End Get
Set(ByVal value As String())
Me.textField = value
End Set
End Property
End Class
Weitere Informationen zur Verwendung von Attributen finden Sie unter Attribute.
Hinweis
Sie können das Wort XmlText
im Code anstelle des längeren XmlTextAttributeverwenden.
Konstruktoren
XmlTextAttribute() |
Initialisiert eine neue Instanz der XmlTextAttribute-Klasse. |
XmlTextAttribute(Type) |
Initialisiert eine neue Instanz der XmlTextAttribute-Klasse. |
Eigenschaften
DataType |
Ruft den XSD (XML Schema Definition)-Datentyp des von XmlSerializer generierten Textes ab oder legt diesen fest. |
Type |
Ruft den Typ des Members ab oder legt diesen fest. |
TypeId |
Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab. (Geerbt von Attribute) |
Methoden
Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Geerbt von Attribute) |
GetHashCode() |
Gibt den Hashcode für diese Instanz zurück. (Geerbt von Attribute) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
IsDefaultAttribute() |
Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
Match(Object) |
Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Geerbt von Attribute) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Geerbt von Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Geerbt von Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Geerbt von Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Geerbt von Attribute) |