XName Klasse

Definition

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

public ref class XName sealed : IEquatable<System::Xml::Linq::XName ^>
public ref class XName sealed : IEquatable<System::Xml::Linq::XName ^>, System::Runtime::Serialization::ISerializable
public sealed class XName : IEquatable<System.Xml.Linq.XName>
public sealed class XName : IEquatable<System.Xml.Linq.XName>, System.Runtime.Serialization.ISerializable
[System.Serializable]
public sealed class XName : IEquatable<System.Xml.Linq.XName>, System.Runtime.Serialization.ISerializable
[System.Serializable]
[System.Runtime.Serialization.KnownType(typeof(System.Xml.Linq.NameSerializer))]
public sealed class XName : IEquatable<System.Xml.Linq.XName>, System.Runtime.Serialization.ISerializable
type XName = class
    interface IEquatable<XName>
type XName = class
    interface IEquatable<XName>
    interface ISerializable
[<System.Serializable>]
type XName = class
    interface IEquatable<XName>
    interface ISerializable
[<System.Serializable>]
[<System.Runtime.Serialization.KnownType(typeof(System.Xml.Linq.NameSerializer))>]
type XName = class
    interface IEquatable<XName>
    interface ISerializable
Public NotInheritable Class XName
Implements IEquatable(Of XName)
Public NotInheritable Class XName
Implements IEquatable(Of XName), ISerializable
Vererbung
XName
Attribute
Implementiert

Hinweise

XML-Namen enthalten einen Namespace und einen lokalen Namen. Ein vollqualifizierter Name ist die Kombination aus Namespace und lokalem Namen.

Erstellen eines XName-Objekts

XName enthält keine öffentlichen Konstruktoren. Stattdessen stellt diese Klasse eine implizite Konvertierung von String bereit, mit der Sie eine XName erzeugen können. Die häufigste Stelle, an der Sie diese Konvertierung verwenden, ist das Erstellen eines Elements oder Attributs: Das erste Argument für den XElement Konstruktor ist ein XName. Indem Sie eine Zeichenfolge übergeben, nutzen Sie die implizite Konvertierung. Der folgende Code erstellt ein Element mit einem Namen, der sich in keinem Namespace befindet:

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

In Visual Basic ist es besser geeignet, XML-Literale zu verwenden:

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

Dieses Beispiel erzeugt die folgende Ausgabe:

<ElementName>content</ElementName>

Beim Zuweisen einer Zeichenfolge zu einem XName-Element wird die implizite Konvertierung von String verwendet.

Im Visual Basic-Beispiel wird XElement mithilfe von XML-Literalen erstellt. Obwohl XML-Literale verwendet werden, wird ein XName-Objekt für XElement erstellt.

Darüber hinaus können Sie die Get Methode für ein XName Objekt aufrufen. Die empfohlene Methode besteht jedoch darin, die implizite Konvertierung aus einer Zeichenfolge zu verwenden.

XName in einem Namespace erstellen

Wie bei XML kann sich ein XName in einem Namespace befinden oder in keinem Namespace.

Für C# wird empfohlen, XName in einem Namespace zu erstellen, das XNamespace-Objekt zu deklarieren und dann die Außerkraftsetzung des Additionsoperators zu verwenden.

Für Visual Basic empfiehlt es sich, XML-Literale und globale Namespacedeklarationen zum Erstellen von XML zu verwenden, die sich in einem Namespace befinden.

XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "ElementName", "content");
Console.WriteLine(root);
Imports <xmlns="http://www.adventure-works.com">

Module Module1
    Sub Main()
        Dim root As XElement = <ElementName>content</ElementName>
        Console.WriteLine(root)
    End Sub
End Module

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Erstellen eines XName in keinem Namespace

Die Namespace Eigenschaft eines XName Objekts ist garantiert nicht NULL. Wenn sich XName in keinem Namespace befindet, wird die Namespace-Eigenschaft auf None gesetzt. Der folgende Code veranschaulicht folgendes:

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.");
Dim root As XElement = <ElementName>content</ElementName>
If (root.Name.Namespace Is XNamespace.None) Then
    Console.WriteLine("The element is in no namespace.")
Else
    Console.WriteLine("The element is in a namespace.")
End If

Dieses Beispiel erzeugt die folgende Ausgabe:

The element is in no namespace.

Verwenden von erweiterten Namen

Sie können auch einen XName aus einem erweiterten XML-Namen im Formular {namespace}localnameerstellen:

XElement root = new XElement("{http://www.adventure-works.com}ElementName", "content");
Console.WriteLine(root);
Dim root As XElement = New XElement("{http://www.adventure-works.com}ElementName", "content")
Console.WriteLine(root)

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Beachten Sie, dass das Erstellen eines XName durch einen erweiterten Namen weniger effizient ist als das Erstellen eines XNamespace Objekts und die Verwendung der Außerkraftsetzung des Additionsoperators. Es ist auch weniger effizient als das Importieren eines globalen Namespaces und die Verwendung von XML-Literalen in Visual Basic.

Wenn Sie einen XName unter Verwendung eines erweiterten Namens erstellen, muss LINQ to XML die atomisierte Instanz eines Namespace finden. Diese Arbeit muss für jede Verwendung eines erweiterten Namens wiederholt werden. Diese zusätzliche Zeit ist wahrscheinlich bei der Erstellung von LINQ-Abfragen zu vernachlässigen; Dies kann jedoch bei der Erstellung einer großen XML-Struktur von Bedeutung sein.

XName-Objekte werden atomisiert

XName Objekte werden garantiert atomisiert; Das heißt, wenn zwei XName Objekte genau denselben Namespace und genau denselben lokalen Namen haben, werden sie dieselbe Instanz gemeinsam nutzen. Die Gleichheits- und Vergleichsoperatoren werden zu diesem Zweck ebenfalls ausdrücklich bereitgestellt.

Dieses Feature ermöglicht unter anderem die schnellere Ausführung von Abfragen. Beim Filtern nach dem Namen von Elementen oder Attributen verwenden die in Prädikaten ausgedrückten Vergleiche den Identitätsvergleich, nicht den Wertvergleich. Es ist viel schneller festzustellen, dass zwei Verweise tatsächlich auf dasselbe Objekt verweisen, als zwei Zeichenfolgen zu vergleichen.

Eigenschaften

Name Beschreibung
LocalName

Ruft den lokalen (nicht qualifizierten) Teil des Namens ab.

Namespace

Ruft den Namespaceteil des vollqualifizierten Namens ab.

NamespaceName

Gibt den URI der XNamespace für diese Eigenschaft XNamezurück.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob der angegebene XName Wert gleich diesem XNameist.

Get(String, String)

Ruft ein XName Objekt aus einem lokalen Namen und einem Namespace ab.

Get(String)

Ruft ein XName Objekt aus einem erweiterten Namen ab.

GetHashCode()

Ruft einen Hashcode für diese XNameab.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt den erweiterten XML-Namen im Format {namespace}localnamezurück.

Operatoren

Name Beschreibung
Equality(XName, XName)

Gibt einen Wert zurück, der angibt, ob zwei Instanzen XName gleich sind.

Implicit(String to XName)

Konvertiert eine Zeichenfolge, die als erweiterter XML-Name (d. h. in ein {namespace}localname Objekt) formatiert istXName.

Inequality(XName, XName)

Gibt einen Wert zurück, der angibt, ob zwei Instanzen ungleich XName sind.

Explizite Schnittstellenimplementierungen

Name Beschreibung
IEquatable<XName>.Equals(XName)

Gibt an, ob der aktuelle XName Wert dem angegebenen XNameentspricht.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Füllt eine SerializationInfo mit den daten auf, die zum Serialisieren des Zielobjekts erforderlich sind.

Gilt für:

Weitere Informationen