XName Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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 |
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, |
| 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. |