XName Klas

Definitie

Vertegenwoordigt een naam van een XML-element of -kenmerk.

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
Overname
XName
Kenmerken
Implementeringen

Opmerkingen

XML-namen bevatten een naamruimte en een lokale naam. Een volledig gekwalificeerde naam is de combinatie van de naamruimte en de lokale naam.

Een XName-object maken

XName bevat geen openbare constructors. In plaats daarvan biedt deze klasse een impliciete conversie van String waarmee u een XName kunt maken. De meest voorkomende plaats waar u deze conversie gebruikt, is bij het maken van een element of kenmerk: het eerste argument voor de XElement constructor is een XName. Door een string door te geven, maak je gebruik van de automatische conversie. Met de volgende code wordt een element gemaakt met een naam die zich in geen naamruimte bevindt:

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

In Visual Basic is het beter om letterlijke XML-waarden te gebruiken:

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<ElementName>content</ElementName>

Een tekenreeks toewijzen aan een XName maakt gebruik van de impliciete conversie van String.

In het Visual Basic-voorbeeld wordt het XElement gemaakt met behulp van XML-literalen. Hoewel letterlijke XML-gegevens worden gebruikt, wordt er een XName object gemaakt voor de XElement.

Daarnaast kunt u de Get methode voor een XName object aanroepen. De aanbevolen manier is om echter de impliciete conversie van een string te gebruiken.

Een XName maken in een naamruimte

Net als bij XML kan een XName zich in een naamruimte bevinden of in geen.

Voor C# is de aanbevolen methode om een XName in een namespace te creëren door eerst het XNamespace object te declareren en vervolgens de overschrijving van de optellingsoperator te gebruiken.

Voor Visual Basic is de aanbevolen methode om letterlijke XML-declaraties en globale naamruimtedeclaraties te gebruiken om XML te maken die zich in een naamruimte bevindt.

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

Een XName maken zonder naamruimte

De Namespace eigenschap van een XName object is gegarandeerd niet null. Als de XName eigenschap zich in geen naamruimte bevindt, wordt de Namespace eigenschap ingesteld op None. De volgende code laat dit zien:

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

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

The element is in no namespace.

Uitgebreide namen gebruiken

U kunt ook een XName maken vanuit een uitgebreide XML-naam in de vorm van {namespace}localname:

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)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

Houd er rekening mee dat het maken van een XName via een uitgebreide naam minder efficiënt is dan het maken van een XNamespace object en het gebruik van de overschrijving van de optellingsoperator. Het is ook minder efficiënt dan het importeren van een globale naamruimte en het gebruik van XML-letterlijke gegevens in Visual Basic.

Als u een XName met een uitgebreide naam maakt, moet LINQ naar XML het atomiseerde exemplaar van een naamruimte vinden. Dit werk moet worden herhaald voor elk gebruik van een uitgebreide naam. Deze extra tijd is waarschijnlijk te verwaarlozen bij het schrijven van LINQ-query's; het kan echter belangrijk zijn bij het maken van een grote XML-structuur.

XName-objecten worden atomiseerd

XName objecten worden gegarandeerd geatomiseerd; dat wanneer twee XName objecten precies dezelfde namespace en precies dezelfde lokale naam hebben, ze hetzelfde exemplaar delen. Er wordt expliciet gebruik gemaakt van de gelijkheids- en vergelijkingsoperatoren voor dit doel.

Deze functie biedt onder andere een snellere uitvoering van query's. Bij het filteren op de naam van elementen of kenmerken gebruiken de vergelijkingen die worden uitgedrukt in predicaten identiteitsvergelijking, niet waardevergelijking. Het is veel sneller om te bepalen dat twee verwijzingen daadwerkelijk verwijzen naar hetzelfde object dan om twee tekenreeksen te vergelijken.

Eigenschappen

Name Description
LocalName

Hiermee haalt u het lokale (niet-gekwalificeerde) deel van de naam op.

Namespace

Hiermee haalt u het naamruimtegedeelte van de volledig gekwalificeerde naam op.

NamespaceName

Retourneert de URI van de XNamespace hiervoor XName.

Methoden

Name Description
Equals(Object)

Bepaalt of de opgegeven XName waarde gelijk is aan deze XName.

Get(String, String)

Hiermee haalt u een XName object op uit een lokale naam en een naamruimte.

Get(String)

Hiermee haalt u een XName object op uit een uitgebreide naam.

GetHashCode()

Hiermee haalt u een hashcode op.XName

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 uitgevouwen XML-naam in de indeling {namespace}localname.

Operators

Name Description
Equality(XName, XName)

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

Implicit(String to XName)

Converteert een tekenreeks die is opgemaakt als een uitgebreide XML-naam (dat wil gezegd,{namespace}localname) naar een XName object.

Inequality(XName, XName)

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

Expliciete interface-implementaties

Name Description
IEquatable<XName>.Equals(XName)

Geeft aan of de huidige XName gelijk is aan de opgegeven XName.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Vult een SerializationInfo met de gegevens die nodig zijn om het doelobject te serialiseren.

Van toepassing op

Zie ook