Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

XName-Klasse

Stellt den Namen eines XML-Elements oder -Attributs dar.

System.Object
  System.Xml.Linq.XName

Namespace:  System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)
[SerializableAttribute]
public sealed class XName : IEquatable<XName>, 
	ISerializable

Der XName-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Eigenschaft Unterstützt von XNA Framework LocalName Ruft den lokalen (nicht qualifizierten) Teil des Namens ab.
Öffentliche Eigenschaft Unterstützt von XNA Framework Namespace Ruft den Namespaceteil des vollqualifizierten Namens ab.
Öffentliche Eigenschaft Unterstützt von XNA Framework NamespaceName Gibt den URI des XNamespace für diesen XName zurück.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode Unterstützt von XNA Framework Equals Bestimmt, ob der angegebene XName und dieser XName gleich sind. (Überschreibt Object.Equals(Object).)
Geschützte Methode Unterstützt von XNA Framework 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.)
Öffentliche Methode Statischer Member Unterstützt von XNA Framework Get(String) Ruft ein XName-Objekt aus einem erweiterten Namen ab.
Öffentliche Methode Statischer Member Unterstützt von XNA Framework Get(String, String) Ruft ein XName-Objekt aus einem lokalen Namen und einem Namespace ab.
Öffentliche Methode Unterstützt von XNA Framework GetHashCode Ruft einen Hashcode für diese XName ab. (Überschreibt Object.GetHashCode().)
Öffentliche Methode Unterstützt von XNA Framework GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte Methode Unterstützt von XNA Framework MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode Unterstützt von XNA Framework ToString Gibt den erweiterten XML-Namen im Format {namespace}localname zurück. (Überschreibt Object.ToString().)
Zum Seitenanfang
  Name Beschreibung
Öffentlicher Operator Statischer Member Unterstützt von XNA Framework Equality Gibt einen Wert zurück, der angibt, ob zwei Instanzen von XName gleich sind.
Öffentlicher Operator Statischer Member Unterstützt von XNA Framework Implicit(String to XName) Konvertiert eine als erweiterter XML-Name (d. h. {namespace}localname) formatierte Zeichenfolge in ein XName-Objekt.
Öffentlicher Operator Statischer Member Unterstützt von XNA Framework Inequality Gibt einen Wert zurück, der angibt, ob zwei Instanzen von XName ungleich sind.
Zum Seitenanfang
  Name Beschreibung
Explizite Schnittstellenimplementierung Private Methode Unterstützt von XNA Framework IEquatable<XName>.Equals Gibt an, ob der aktuelle XName und der angegebene XName gleich sind.
Explizite Schnittstellenimplementierung Private Methode ISerializable.GetObjectData Füllt eine SerializationInfo mit den Daten auf, die zum Serialisieren des Zielobjekts erforderlich sind.
Zum Seitenanfang

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:

XElement root = new XElement("ElementName", "content");
Console.WriteLine(root);

In Visual Basic empfiehlt sich die Verwendung von XML-Literalen:

Dim root As XElement = <ElementName>content</ElementName>
Console.WriteLine(root)

Mit diesem Beispiel wird die folgende Ausgabe erzeugt:

<ElementName>content</ElementName>

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:

<ElementName xmlns="http://www.adventure-works.com">content</ElementName>

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:

<ElementName xmlns="http://www.adventure-works.com">content</ElementName>

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.

.NET Framework

Unterstützt in: 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

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.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ