XName Klass

Definition

Representerar ett namn på ett XML-element eller -attribut.

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
Arv
XName
Attribut
Implementeringar

Kommentarer

XML-namn innehåller ett namnområde och ett lokalt namn. Ett fullständigt kvalificerat namn är kombinationen av namnområdet och det lokala namnet.

Skapa ett XName-objekt

XName innehåller inga offentliga konstruktorer. I stället ger den här klassen en implicit konvertering från String som gör att du kan skapa en XName. Det vanligaste stället du använder den här konverteringen är när du skapar ett element eller attribut: Det första argumentet för XElement konstruktorn är en XName. Genom att skicka en sträng drar du nytta av den implicita konverteringen. Följande kod skapar ett element med ett namn som inte finns i något namnområde:

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

I Visual Basic är det lämpligare att använda XML-literaler:

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

Det här exemplet genererar följande utdata:

<ElementName>content</ElementName>

När du tilldelar en sträng till en XName används den implicita konverteringen från String.

Visual Basic-exemplet skapar XElement med hjälp av XML-literaler. Även om XML-literaler används skapas ett XName objekt för XElement.

Dessutom kan du anropa Get metoden för ett XName objekt. Det rekommenderade sättet är dock att använda implicit konvertering från sträng.

Skapa ett XName i ett namnområde

Precis som med XML kan en XName finnas i ett namnområde, eller så kan den inte finnas i något namnområde.

För C#är den rekommenderade metoden för att skapa en XName i ett namnområde att deklarera XNamespace objektet och sedan använda åsidosättningen av additionsoperatorn.

För Visual Basic är den rekommenderade metoden att använda XML-literaler och globala namnområdesdeklarationer för att skapa XML som finns i ett namnområde.

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

Det här exemplet genererar följande utdata:

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

Skapa ett XName utan namnområde

Egenskapen Namespace för ett XName objekt är garanterad att inte vara null. Om XName är i inget namnområde, kommer Namespace-egenskapen att ställas in på None. Följande kod visar detta:

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

Det här exemplet genererar följande utdata:

The element is in no namespace.

Använda expanderade namn

Du kan också skapa ett XName från ett expanderat XML-namn i formuläret {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)

Det här exemplet genererar följande utdata:

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

Tänk på att det är mindre effektivt att skapa ett XName via ett expanderat namn än att skapa ett XNamespace objekt och använda åsidosättningen av additionsoperatorn. Det är också mindre effektivt än att importera ett globalt namnområde och använda XML-literaler i Visual Basic.

Om du skapar ett XName med ett utökat namn måste LINQ till XML hitta den atomiserade instansen av ett namnområde. Det här arbetet måste upprepas för varje användning av ett expanderat namn. Den här ytterligare tiden är sannolikt försumbar när du skriver LINQ-frågor. Det kan dock vara viktigt när du skapar ett stort XML-träd.

XName-objekt atomiseras

XName objekt är garanterade att atomiseras; Om två XName objekt har exakt samma namnområde och exakt samma lokala namn, delar de samma instans. Likhets- och jämförelseoperatorerna tillhandahålls också uttryckligen för detta ändamål.

Den här funktionen medför bland annat snabbare genomförande av frågor. När du filtrerar på namnet på element eller attribut använder jämförelserna som uttrycks i predikat identitetsjämförelse, inte värdejämförelse. Det går mycket snabbare att fastställa att två referenser faktiskt refererar till samma objekt än att jämföra två strängar.

Egenskaper

Name Description
LocalName

Hämtar den lokala (okvalificerade) delen av namnet.

Namespace

Hämtar namnområdesdelen av det fullständigt kvalificerade namnet.

NamespaceName

Returnerar URI: XNamespace n för för den här XName.

Metoder

Name Description
Equals(Object)

Avgör om den angivna XName är lika med den här XName.

Get(String, String)

Hämtar ett XName objekt från ett lokalt namn och ett namnområde.

Get(String)

Hämtar ett XName objekt från ett expanderat namn.

GetHashCode()

Hämtar en hash-kod för den här XName.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar det expanderade XML-namnet i formatet {namespace}localname.

Operatorer

Name Description
Equality(XName, XName)

Returnerar ett värde som anger om två instanser av XName är lika med.

Implicit(String to XName)

Konverterar en sträng formaterad som ett expanderat XML-namn (dvs{namespace}localname. till ett XName objekt).

Inequality(XName, XName)

Returnerar ett värde som anger om två instanser av XName inte är lika med.

Explicita gränssnittsimplementeringar

Name Description
IEquatable<XName>.Equals(XName)

Anger om strömmen XName är lika med den angivna XName.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Fyller i en SerializationInfo med de data som krävs för att serialisera målobjektet.

Gäller för

Se även