XName Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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) | |
| 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 |
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 |
| 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. |