XName Třída

Definice

Představuje název elementu nebo atributu XML.

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
Dědičnost
XName
Atributy
Implementuje

Poznámky

Názvy XML zahrnují jmenný prostor a místní název. Plně kvalifikovaný název je kombinací prostoru názvů a místního názvu.

Vytvoření objektu XName

XName neobsahuje žádné veřejné konstruktory. Místo toho tato třída poskytuje implicitní převod z String, který umožňuje vytvořit XName. Nejběžnějším místem, kde použijete tento převod, je při vytváření elementu nebo atributu: první argument pro konstruktor XElement je XName. Předáním řetězce využijete implicitního převodu. Následující kód vytvoří prvek s názvem, který není v žádném oboru názvů:

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

V jazyce Visual Basic je vhodnější použít literály XML:

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

Tento příklad vytvoří následující výstup:

<ElementName>content</ElementName>

Přiřadit řetězec k XName používá implicitní konverzi z String.

Příklad v jazyce Visual Basic vytvoří XElement pomocí literálů XML. I když se používají literály XML, objekt XName se vytvoří pro XElement.

Kromě toho můžete volat metodu Get pro objekt XName. Doporučeným způsobem je však použití implicitního převodu z řetězce.

Vytvořte XName v oboru názvů

Stejně jako u XML může být XName v oboru názvů, nebo může být bez oboru názvů.

Pro doporučení v C# pro vytvoření XName v oboru názvů je deklarovat objekt XNamespace a poté použít přetížení operátoru sčítání.

Pro Visual Basic se doporučuje použít literály XML a globální deklarace oboru názvů k vytvoření XML v oboru názvů.

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

Tento příklad vytvoří následující výstup:

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

Vytvořit XName bez oboru názvů

Vlastnost Namespace objektu XName je zaručena, že není null. Pokud XName není v žádném oboru názvů, bude vlastnost Namespace nastavena na None. Následující kód ukazuje toto:

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

Tento příklad vytvoří následující výstup:

The element is in no namespace.

Použití rozbalených názvů

Můžete také vytvořit XName z rozbaleného názvu XML ve formě {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)

Tento příklad vytvoří následující výstup:

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

Mějte na paměti, že vytvoření objektu XName pomocí rozšířeného názvu je méně efektivní než vytvoření objektu XNamespace a použití přepsání operátoru sčítání. Je také méně efektivní než importování globálního oboru názvů a použití literálů XML v jazyce Visual Basic.

Pokud vytvoříte rozšířený XName název, musí LINQ to XML najít atomizovanou instanci oboru názvů. Tato práce se musí opakovat pro každé použití rozšířeného názvu. Tento dodatečný čas bude pravděpodobně při psaní dotazů LINQ zanedbatelný; Při vytváření velkého stromu XML však může být významné.

Objekty XName jsou atomizované

XName je zaručeno, že objekty budou atomizovány; to znamená, že pokud dva XName objekty mají naprosto stejný prostor názvů a naprosto stejný lokální název, budou sdílet stejnou instanci. Operátory rovnosti a porovnání jsou pro tento účel také explicitně definovány.

Kromě dalších výhod tato funkce umožňuje rychlejší spouštění dotazů. Při filtrování podle názvů prvků nebo atributů se v predikátech využívají porovnání identity, nikoli porovnání hodnot. Mnohem rychlejší je zjistit, že dva odkazy ve skutečnosti odkazují na stejný objekt, než porovnat dva řetězce.

Vlastnosti

Name Description
LocalName

Získá místní (nekvalifikovanou) část názvu.

Namespace

Získá část oboru názvů plně kvalifikovaný název.

NamespaceName

Vrátí identifikátor URI tohoto XNamespaceidentifikátoru XName .

Metody

Name Description
Equals(Object)

Určuje, zda je zadaná XName hodnota rovna tomuto XName.

Get(String, String)

XName Získá objekt z místního názvu a oboru názvů.

Get(String)

XName Získá objekt z rozšířeného názvu.

GetHashCode()

Získá hash kód pro tento XName.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí rozbalený název XML ve formátu {namespace}localname.

Operátory

Name Description
Equality(XName, XName)

Vrátí hodnotu určující, zda jsou dvě instance rovny XName .

Implicit(String to XName)

Převede řetězec formátovaný jako rozbalený název XML (to znamená{namespace}localname) na XName objekt.

Inequality(XName, XName)

Vrátí hodnotu označující, zda se dvě instance XName nerovnají.

Explicitní implementace rozhraní

Name Description
IEquatable<XName>.Equals(XName)

Určuje, zda je aktuální XName hodnota rovna zadanému XName.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Naplní SerializationInfo data požadovaná k serializaci cílového objektu.

Platí pro

Viz také