Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
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.