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.
Diese Klasse stellt das XML-Konstrukt von Namespaces dar.
Jedes XName-Element enthält ein XNamespace-Element. Auch wenn sich ein Element nicht in einem Namespace befindet, enthält das Element XName immer noch einen Namespace. XNamespace.None Es ist gewährleistet, dass die XName.Namespace-Eigenschaft nicht null ist.
Erstellen eines XNamespace-Objekts
Die am häufigsten verwendete Methode zum Erstellen eines XNamespace Objekts besteht darin, ihm einfach eine Zeichenfolge zuzuweisen. Anschließend können Sie den Namespace mit einem lokalen Namen kombinieren, indem Sie die Außerkraftsetzung des Additionsoperators verwenden. Das folgende Beispiel zeigt diesen Idiom:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root", "Content");
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", "Content")
Console.WriteLine(root)
In Visual Basic würden Sie jedoch in der Regel einen globalen Standardnamespace wie folgt deklarieren:
Imports <xmlns='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<Root>Content</Root>
Console.WriteLine(root)
End Sub
End Module
Dieses Beispiel erzeugt die folgende Ausgabe:
<Root xmlns="http://www.adventure-works.com">Content</Root>
Beim Zuweisen einer Zeichenfolge zu einem XNamespace-Element wird die implizite Konvertierung von String verwendet.
Weitere Informationen und Beispiele finden Sie unter Erstellen eines Dokuments mit Namespaces in C# (LINQ to XML).
Weitere Informationen zur Verwendung von Namespaces in Visual Basic finden Sie unter Arbeiten mit XML-Namespaces .
Steuerung von Namespace-Präfixen
Wenn Sie ein Attribut erstellen, das einen Namespace deklariert, wird das im Attribut angegebene Präfix im serialisierten XML-Code beibehalten. Um ein Attribut zu erstellen, das einen Namespace mit einem Präfix deklariert, erstellen Sie ein Attribut, bei dem der Namespace des Namens des Attributs lautet Xmlns, und der Name des Attributs ist das Namespacepräfix. Der Wert des Attributs ist der URI des Namespace. Das folgende Beispiel zeigt diesen Idiom:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
"Content");
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", _
New XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"), _
"Content")
Console.WriteLine(root)
In Visual Basic würden Sie in der Regel eine globale Namespacedeklaration verwenden, anstatt einen Namespaceknoten zum Steuern von Namespacepräfixen zu erstellen:
Imports <xmlns:aw='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<aw:Root>Content</aw:Root>
Console.WriteLine(root)
End Sub
End Module
Dieses Beispiel erzeugt die folgende Ausgabe:
<aw:Root xmlns:aw="http://www.adventure-works.com">Content</aw:Root>
Weitere Informationen finden Sie unter Steuern von Namespacepräfixen.
Erstellen eines Standardnamespaces
Beim Erstellen eines Attributs, das einen Namespace darstellt, wird, falls der Attributname den speziellen Wert "xmlns" hat, der Namespace beim Serialisieren der XML-Struktur als Standardnamespace deklariert. Das spezielle Attribut mit dem Namen "xmlns" selbst befindet sich nicht in einem Namespace. Der Wert des Attributs ist der Namespace-URI.
Im folgenden Beispiel wird eine XML-Struktur erstellt, die ein Attribut enthält, das so deklariert wird, dass der Namespace zum Standardnamespace wird:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
new XAttribute("xmlns", "http://www.adventure-works.com"),
new XElement(aw + "Child", "content")
);
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", _
New XAttribute("xmlns", "http://www.adventure-works.com"), _
New XElement(aw + "Child", "content") _
)
Console.WriteLine(root)
In Visual Basic würden Sie in der Regel eine globale Standardnamespacedeklaration verwenden, anstatt einen Namespaceknoten zum Erstellen eines Standardnamespaces zu erstellen:
Imports <xmlns='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<Root>
<Child>content</Child>
</Root>
Console.WriteLine(root)
End Sub
End Module
Dieses Beispiel erzeugt die folgende Ausgabe:
<Root xmlns="http://www.adventure-works.com">
<Child>content</Child>
</Root>
XNamespace-Atomisierung
XNamespace Objekte werden garantiert atomisiert; Das heißt, wenn zwei XNamespace Objekte genau denselben URI haben, werden sie dieselbe Instanz gemeinsam nutzen. Die Gleichheits- und Vergleichsoperatoren werden ausdrücklich zu diesem Zweck bereitgestellt.
Verwenden von erweiterten Namen
Eine weitere Möglichkeit, einen Namespace und einen lokalen Namen anzugeben, besteht darin, einen erweiterten Namen im Formular {namespace}namezu verwenden:
XElement e = new XElement("{http://www.adventure-works.com}Root",
new XAttribute("{http://www.adventure-works.com}Att", "content")
);
Console.WriteLine(e);
Dim e As XElement = New XElement("{http://www.adventure-works.com}Root", _
New XAttribute("{http://www.adventure-works.com}Att", "content") _
)
Console.WriteLine(e)
Dieses Beispiel erzeugt die folgende Ausgabe:
<Root p1:Att="content" xmlns:p1="http://www.adventure-works.com" xmlns="http://www.adventure-works.com" />
Dieser Ansatz hat Leistungsauswirkungen. Jedes Mal, wenn Sie eine Zeichenfolge übergeben, die einen erweiterten Namen an LINQ to XML enthält, muss er den Namen analysieren, den atomisierten Namespace suchen und den atomisierten Namen finden. Dieser Vorgang benötigt CPU-Zeit. Wenn die Leistung wichtig ist, können Sie einen anderen Ansatz verwenden.
Bei Visual Basic empfiehlt es sich, XML-Literale zu verwenden, die nicht die Verwendung erweiterter Namen beinhalten.