XNamespace Klas

Definitie

Vertegenwoordigt een XML-naamruimte. Deze klasse kan niet worden overgenomen.

public ref class XNamespace sealed
public sealed class XNamespace
type XNamespace = class
Public NotInheritable Class XNamespace
Overname
XNamespace

Opmerkingen

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.

Eigenschappen

Name Description
NamespaceName

Hiermee haalt u de URI (Uniform Resource Identifier) van deze naamruimte op.

None

Hiermee haalt u het XNamespace object op dat overeenkomt met geen naamruimte.

Xml

Hiermee haalt u het XNamespace object op dat overeenkomt met de XML-URI (http://www.w3.org/XML/1998/namespace).

Xmlns

Hiermee haalt u het XNamespace object op dat overeenkomt met de XMLNS-URI (http://www.w3.org/2000/xmlns/).

Methoden

Name Description
Equals(Object)

Bepaalt of de opgegeven XNamespace waarde gelijk is aan de huidige XNamespace.

Get(String)

Hiermee haalt u een XNamespace op voor de opgegeven URI (Uniform Resource Identifier).

GetHashCode()

Hiermee haalt u een hashcode op.XNamespace

GetName(String)

Retourneert een XName object dat op basis XNamespace hiervan is gemaakt en de opgegeven lokale naam.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert de URI van deze XNamespace.

Operators

Name Description
Addition(XNamespace, String)

Combineert een XNamespace object met een lokale naam om een XName.

Equality(XNamespace, XNamespace)

Retourneert een waarde die aangeeft of twee exemplaren XNamespace gelijk zijn.

Implicit(String to XNamespace)

Converteert een tekenreeks die een URI (Uniform Resource Identifier) bevat naar een XNamespace.

Inequality(XNamespace, XNamespace)

Retourneert een waarde die aangeeft of twee exemplaren XNamespace niet gelijk zijn.

Van toepassing op

Zie ook