Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
Deze klasse vertegenwoordigt de XML-constructie van naamruimten.
Elk XName bevat een XNamespace. Zelfs als een element zich niet in een naamruimte bevindt, bevat het element XName nog steeds een naamruimte, XNamespace.None. De XName.Namespace eigenschap is gegarandeerd geen null.
Een XNamespace-object maken
De meest voorkomende manier om een XNamespace object te maken, is door er gewoon een tekenreeks aan toe te wijzen. Vervolgens kunt u de naamruimte combineren met een lokale naam door gebruik te maken van het overschrijven van de opteloperator. In het volgende voorbeeld ziet u dit idioom:
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 zou u echter doorgaans als volgt een algemene standaardnaamruimte declareren:
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
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
<Root xmlns="http://www.adventure-works.com">Content</Root>
Een tekenreeks toewijzen aan een XNamespace maakt gebruik van de impliciete conversie van String.
Zie Een document maken met naamruimten in C# (LINQ naar XML) voor meer informatie en voorbeelden.
Zie Werken met XML-naamruimten voor meer informatie over het gebruik van naamruimten in Visual Basic.
Voorvoegsels voor naamruimte beheren
Als u een kenmerk maakt dat een naamruimte declareert, wordt het voorvoegsel dat in het kenmerk is opgegeven, behouden in de geserialiseerde XML. Als u een kenmerk wilt maken dat een naamruimte met een voorvoegsel declareert, maakt u een kenmerk waarin de naamruimte van de naam van het kenmerk is Xmlnsen de naam van het kenmerk het voorvoegsel van de naamruimte is. De waarde van het kenmerk is de URI van de naamruimte. In het volgende voorbeeld ziet u dit idioom:
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 gebruikt u doorgaans een globale naamruimtedeclaratie in plaats van een naamruimteknooppunt te maken om voorvoegsels van naamruimten te beheren:
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
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
<aw:Root xmlns:aw="http://www.adventure-works.com">Content</aw:Root>
Zie Naamruimtevoorvoegsels beheren voor meer informatie.
Een standaardnaamruimte maken
Wanneer u een kenmerk maakt dat een naamruimte is, als de kenmerknaam de speciale waarde 'xmlns' heeft, wordt de naamruimte als standaardnaamruimte gedeclareerd wanneer de XML-structuur wordt geserialiseerd. Het speciale kenmerk met de naam 'xmlns' zelf bevindt zich niet in een naamruimte. De waarde van het kenmerk is de naamruimte-URI.
In het volgende voorbeeld wordt een XML-structuur gemaakt die een kenmerk bevat dat zodanig wordt gedeclareerd dat de naamruimte de standaardnaamruimte wordt:
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, in plaats van een naamruimteknooppunt te maken om een standaardnaamruimte te maken, gebruikt u doorgaans een algemene standaardnaamruimtedeclaratie:
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
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
<Root xmlns="http://www.adventure-works.com">
<Child>content</Child>
</Root>
XNamespace-atomisering
XNamespace objecten worden gegarandeerd geatomiseerd; dat wil zeggen dat als twee XNamespace objecten precies dezelfde URI hebben, ze dezelfde instantie delen. De gelijkheids- en vergelijkingsoperatoren zijn expliciet bedoeld voor dit doel.
Uitgebreide namen gebruiken
Een andere manier om een naamruimte en een lokale naam op te geven, is door een uitgebreide naam in het formulier {namespace}namete gebruiken:
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)
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
<Root p1:Att="content" xmlns:p1="http://www.adventure-works.com" xmlns="http://www.adventure-works.com" />
Deze benadering heeft gevolgen voor de prestaties. Telkens wanneer u een tekenreeks met een uitgevouwen naam doorgeeft aan LINQ naar XML, moet deze de naam parseren, de atomiseerde naamruimte zoeken en de atomiseerde naam zoeken. Dit proces kost CPU-tijd. Als de prestaties belangrijk zijn, kunt u een andere benadering gebruiken.
Met Visual Basic is het raadzaam om letterlijke XML-gegevens te gebruiken, waarbij geen gebruik wordtgemaakt van uitgebreide namen.