XName Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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) | |
| 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 |
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 |
| 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) | |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Fyller i en SerializationInfo med de data som krävs för att serialisera målobjektet. |