Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
XName-Klasse
Stellt den Namen eines XML-Elements oder -Attributs dar.
Assembly: System.Xml.Linq (in System.Xml.Linq.dll)
Der XName-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
|
LocalName | Ruft den lokalen (nicht qualifizierten) Teil des Namens ab. |
|
Namespace | Ruft den Namespaceteil des vollqualifizierten Namens ab. |
|
NamespaceName | Gibt den URI des XNamespace für diesen XName zurück. |
| Name | Beschreibung | |
|---|---|---|
|
Equals | Bestimmt, ob der angegebene XName und dieser XName gleich sind. (Überschreibt Object.Equals(Object).) |
|
Finalize | Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.) |
|
Get(String) | Ruft ein XName-Objekt aus einem erweiterten Namen ab. |
|
Get(String, String) | Ruft ein XName-Objekt aus einem lokalen Namen und einem Namespace ab. |
|
GetHashCode | Ruft einen Hashcode für diese XName ab. (Überschreibt Object.GetHashCode().) |
|
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) |
|
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) |
|
ToString | Gibt den erweiterten XML-Namen im Format {namespace}localname zurück. (Überschreibt Object.ToString().) |
| Name | Beschreibung | |
|---|---|---|
|
Equality | Gibt einen Wert zurück, der angibt, ob zwei Instanzen von XName gleich sind. |
|
Implicit(String to XName) | Konvertiert eine als erweiterter XML-Name (d. h. {namespace}localname) formatierte Zeichenfolge in ein XName-Objekt. |
|
Inequality | Gibt einen Wert zurück, der angibt, ob zwei Instanzen von XName ungleich sind. |
| Name | Beschreibung | |
|---|---|---|
|
IEquatable<XName>.Equals | Gibt an, ob der aktuelle XName und der angegebene XName gleich sind. |
|
ISerializable.GetObjectData | Füllt eine SerializationInfo mit den Daten auf, die zum Serialisieren des Zielobjekts erforderlich sind. |
XML-Namen umfassen einen Namespace und einen lokalen Namen. Ein vollqualifizierter Name ist die Kombination von Namespace und lokalem Namen.
Erstellen eines XName-Objekts
XName enthält keine öffentlichen Konstruktoren. Stattdessen stellt diese Klasse eine implizite Konvertierung von String bereit, die es Ihnen ermöglicht, einen XName zu erstellen. Am häufigsten wird diese Konvertierung beim Erstellen eines Elements oder Attributs verwendet: Das erste Argument für den XElement-Konstruktor ist ein XName. Sie nutzen die implizite Konvertierung, wenn Sie eine Zeichenfolge übergeben. Im folgenden Code wird ein Element mit einem Namen erstellt, der sich in keinem Namespace befindet:
In Visual Basic empfiehlt sich die Verwendung von XML-Literalen:
Mit diesem Beispiel wird die folgende Ausgabe erzeugt:
Beim Zuweisen einer Zeichenfolge zu einem XName wird die implizite Konvertierung von String verwendet.
Im Visual Basic-Beispiel wird das XElement mit XML-Literalen erstellt. Obwohl XML-Literale verwendet werden, wird für das XElement ein XName-Objekt erstellt.
Sie können außerdem die Get-Methode für ein XName-Objekt aufrufen. Es wird jedoch empfohlen, die implizite Konvertierung von string zu verwenden.
Erstellen eines XName in einem Namespace
XName kann sich wie XML in einem Namespace oder in keinem Namespace befinden.
Für C# wird zum Erstellen eines XName in einem Namespace empfohlen, das XNamespace-Objekt zu deklarieren und dann die Überschreibung des Additionsoperators zu verwenden.
Für Visual Basic wird zum Erstellen von XML in einem Namespace empfohlen, XML-Literale und globale Namespacedeklarationen zu verwenden.
XNamespace aw = "http://www.adventure-works.com"; XElement root = new XElement(aw + "ElementName", "content"); Console.WriteLine(root);
Dieses Beispiel erzeugt folgende Ausgabe:
Erstellen eines XName in keinem Namespace
Die Namespace-Eigenschaft eines XName-Objekts ist unter keinen Umständen NULL. Wenn sich der XName in keinem Namespace befindet, wird die Namespace-Eigenschaft auf None festgelegt. Der folgende Code zeigt dies:
XElement root = new XElement("ElementName", "content"); if (root.Name.Namespace == XNamespace.None) Console.WriteLine("The element is in no namespace."); else Console.WriteLine("The element is in a namespace.");
Dieses Beispiel erzeugt folgende Ausgabe:
The element is in no namespace.
Verwenden von erweiterten Namen
Sie können auch einen XName aus einem erweiterten XML-Namen im Format {namespace}localname erstellen:
XElement root = new XElement("{http://www.adventure-works.com}ElementName", "content"); Console.WriteLine(root);
Dieses Beispiel erzeugt folgende Ausgabe:
Beachten Sie, dass das Erstellen eines XName über einen erweiterten Namen weniger effizient ist, als ein XNamespace-Objekt zu erstellen und die Überschreibung des Additionsoperators zu verwenden. Es ist auch weniger effizient, als in Visual Basic einen globalen Namespace zu importieren und XML-Literale zu verwenden.
Wenn Sie einen XName unter Verwendung eines erweiterten Namens erstellen, muss LINQ to XML die atomisierte Instanz eines Namespaces suchen. Dieser Vorgang muss für jede Verwendung eines erweiterten Namens wiederholt werden. Diese zusätzliche Zeit ist beim Schreiben von LINQ-Abfragen wahrscheinlich vernachlässigbar, kann jedoch beim Erstellen einer großen XML-Struktur bedeutsam sein.
XName-Objekte sind atomisiert
XName-Objekte sind mit Sicherheit atomisiert. Das bedeutet, wenn zwei XName-Objekte über genau denselben Namespace und genau denselben lokalen Namen verfügen, handelt es sich um dieselbe Instanz. Der Gleichheits- und Vergleichsoperator werden explizit für diesen Zweck bereitgestellt.
Neben anderen Vorteilen ermöglicht dieses Feature die schnellere Ausführung von Abfragen. Beim Filtern nach dem Namen von Elementen oder Attributen erfolgen die in Prädikaten angegebenen Vergleiche als Identitätsvergleich und nicht als Wertvergleich. Es lässt sich viel schneller bestimmen, ob zwei Verweise tatsächlich auf dasselbe Objekt verweisen, als zwei Zeichenfolgen zu vergleichen.
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.