XName Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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) | |
| 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 |
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á |
| Inequality(XName, XName) |
Vrátí hodnotu označující, zda se dvě instance XName nerovnají. |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IEquatable<XName>.Equals(XName) | |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Naplní SerializationInfo data požadovaná k serializaci cílového objektu. |