XName Klasa

Definicja

Reprezentuje nazwę elementu XML lub atrybutu.

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
Dziedziczenie
XName
Atrybuty
Implementuje

Uwagi

Nazwy XML obejmują przestrzeń nazw i nazwę lokalną. Pełna kwalifikowana nazwa jest kombinacją przestrzeni nazw i nazwy lokalnej.

Tworzenie obiektu XName

XName nie zawiera żadnych konstruktorów publicznych. Zamiast tego ta klasa udostępnia niejawną konwersję z String, która umożliwia utworzenie XName. Najczęstszym miejscem, w którym używasz tej konwersji, jest konstruowanie elementu lub atrybutu: pierwszym argumentem konstruktora XElement jest XName. Przekazując ciąg, możesz skorzystać z niejawnej konwersji. Poniższy kod tworzy element o nazwie, która nie znajduje się w żadnej przestrzeni nazw:

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

W języku Visual Basic bardziej odpowiednie jest użycie literałów XML:

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

Ten przykład generuje następujące wyniki:

<ElementName>content</ElementName>

Przypisywanie ciągu znakowego do XName wykorzystuje niejawne konwertowanie z String.

Przykład języka Visual Basic tworzy XElement używając literałów XML. Mimo że są używane literały XML, XName obiekt jest tworzony dla obiektu XElement.

Ponadto, można wywołać metodę Get dla obiektu XName. Zalecanym sposobem jest jednak użycie niejawnej konwersji z ciągu.

Tworzenie nazwy XName w przestrzeni nazw

Podobnie jak w przypadku kodu XML, XName element może znajdować się w przestrzeni nazw lub nie może znajdować się w żadnej przestrzeni nazw.

W przypadku języka C# zalecaną metodą tworzenia obiektu XName w przestrzeni nazw jest zadeklarowanie XNamespace obiektu, a następnie użycie przesłonięcia operatora dodawania.

W przypadku języka Visual Basic zalecane jest użycie literałów XML i globalnych deklaracji przestrzeni nazw w celu utworzenia kodu XML, który znajduje się w przestrzeni nazw.

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

Ten przykład generuje następujące wyniki:

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

Utwórz XName bez przestrzeni nazw

Właściwość Namespace obiektu XName jest gwarantowana jako nienullowa. Jeśli XName nie znajduje się w żadnej przestrzeni nazw, wówczas właściwość Namespace zostanie ustawiona na None. Poniższy kod to demonstruje:

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

Ten przykład generuje następujące wyniki:

The element is in no namespace.

Używanie rozszerzonych nazw

Możesz również utworzyć element XName na podstawie rozwiniętej nazwy XML w formularzu {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)

Ten przykład generuje następujące wyniki:

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

Należy pamiętać, że tworzenie obiektu XName za pomocą rozszerzonej nazwy jest mniej wydajne niż tworzenie XNamespace obiektu i używanie przesłonięcia operatora dodawania. Jest to również mniej wydajne niż importowanie globalnej przestrzeni nazw i używanie literałów XML w Visual Basic.

Jeśli tworzysz XName przy użyciu rozszerzonej nazwy, LINQ to XML musi znaleźć zatomizowaną instancję przestrzeni nazw. Ta praca musi być powtarzana dla każdego użycia rozszerzonej nazwy. Ten dodatkowy czas może być niewielki podczas pisania zapytań LINQ; jednak może to być istotne podczas tworzenia dużego drzewa XML.

Obiekty XName są atomizowane

XName gwarantuje się atomizację obiektów — co oznacza, że jeśli dwa XName obiekty mają dokładnie taką samą przestrzeń nazw i dokładnie taką samą nazwę lokalną, będą współdzielić tę samą instancję. Operatory równości i porównania są również jawnie udostępniane w tym celu.

Między innymi ta funkcja umożliwia szybsze wykonywanie zapytań. Podczas filtrowania według nazwy elementów lub atrybutów porównania wyrażone w predykatach używają porównania tożsamości, a nie porównania wartości. Znacznie szybciej można ustalić, że dwa odwołania rzeczywiście odwołują się do tego samego obiektu niż do porównania dwóch ciągów.

Właściwości

Nazwa Opis
LocalName

Pobiera lokalną (niekwalifikowaną) część nazwy.

Namespace

Pobiera część przestrzeni nazw w pełni kwalifikowanej nazwy.

NamespaceName

Zwraca identyfikator URI XNamespace dla tego elementu XName.

Metody

Nazwa Opis
Equals(Object)

Określa, czy określona XName wartość jest równa temu XName.

Get(String, String)

XName Pobiera obiekt z lokalnej nazwy i przestrzeni nazw.

Get(String)

XName Pobiera obiekt z rozwiniętej nazwy.

GetHashCode()

Pobiera kod skrótu dla tego elementu XName.

GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ToString()

Zwraca rozwiniętą nazwę XML w formacie {namespace}localname.

Operatory

Nazwa Opis
Equality(XName, XName)

Zwraca wartość wskazującą, czy dwa wystąpienia XName są równe.

Implicit(String to XName)

Konwertuje ciąg sformatowany jako rozszerzoną nazwę XML (czyli{namespace}localname) na XName obiekt.

Inequality(XName, XName)

Zwraca wartość wskazującą, czy dwa wystąpienia XName nie są równe.

Jawne implementacje interfejsu

Nazwa Opis
IEquatable<XName>.Equals(XName)

Wskazuje, czy bieżąca XName wartość jest równa określonej XNamewartości .

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Wypełnia element SerializationInfo danymi wymaganymi do serializacji obiektu docelowego.

Dotyczy

Zobacz też