System.Xml.Linq.XName sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

XML adları bir ad alanı ve yerel ad içerir. Tam ad, ad alanı ile yerel adın birleşimidir.

XName nesnesi oluşturma

XName herhangi bir ortak oluşturucu içermez. Bunun yerine, bu sınıf öğesinden String bir oluşturmanızı sağlayan örtük bir XNamedönüştürme sağlar. Bu dönüştürmeyi kullandığınız en yaygın yer bir öğe veya öznitelik oluştururken kullanılır: Oluşturucunun XElement ilk bağımsız değişkeni bir XName'dir. Bir dize geçirerek örtük dönüştürmeden yararlanacaksınız. Aşağıdaki kod ad alanında olmayan bir ada sahip bir öğe oluşturur:

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

Visual Basic'te XML değişmez değerlerini kullanmak daha uygundur:

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

Bu örnek aşağıdaki çıkışı oluşturur:

<ElementName>content</ElementName>

öğesine bir dize XName atamak, 'den Stringörtük dönüştürmeyi kullanır.

Visual Basic örneği, XML değişmez değerlerini kullanarak öğesini oluşturur XElement . XML değişmez değerleri kullanılabilse de, için XElementbir XName nesne oluşturulur.

Ayrıca, bir XName nesne için Get yöntemini çağırabilirsiniz. Ancak, önerilen yol dizeden örtük dönüştürmeyi kullanmaktır.

Ad alanında XName oluşturma

XML'de olduğu gibi, bir XName ad alanında veya ad alanında olmayabilir.

C# için, ad alanında oluşturma XName için önerilen yaklaşım nesneyi bildirmek XNamespace ve ardından ekleme işlecinin geçersiz kılmasını kullanmaktır.

Visual Basic için önerilen yaklaşım, ad alanında xml oluşturmak için XML değişmez değerlerini ve genel ad alanı bildirimlerini kullanmaktır.

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

Bu örnek aşağıdaki çıkışı oluşturur:

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

Ad alanında XName oluşturma

Namespace Bir XName nesnenin özelliğinin null olmaması garanti edilir. XName ad alanında değilse, Namespace özelliği olarak Noneayarlanır. Aşağıdaki kod bunu gösterir:

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

Bu örnek aşağıdaki çıkışı oluşturur:

The element is in no namespace.

Genişletilmiş adları kullanma

Biçiminde {namespace}localnamegenişletilmiş xml adından da oluşturabilirsinizXName:

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)

Bu örnek aşağıdaki çıkışı oluşturur:

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

Genişletilmiş bir ad aracılığıyla oluşturmanın XName , nesne oluşturmaktan XNamespace ve ekleme işlecinin geçersiz kılmasını kullanmaktan daha az verimli olduğunu unutmayın. Ayrıca, genel ad alanını içeri aktarmaktan ve Visual Basic'te XML değişmez değerlerini kullanmaktan daha az verimlidir.

Genişletilmiş bir ad kullanarak bir XName oluşturursanız, LINQ to XML bir ad alanının atomize örneğini bulmalıdır. Bu çalışma, genişletilmiş bir adın her kullanımı için yinelenmelidir. LinQ sorguları yazarken bu ek süre göz ardı edilebilir; ancak, büyük bir XML ağacı oluştururken önemli olabilir.

XName nesneleri atomize edilir

XName nesnelerin atomize edilmesi garanti edilir; yani, iki XName nesne tam olarak aynı ad alanına ve tam olarak aynı yerel ada sahipse, aynı örneği paylaşır. Eşitlik ve karşılaştırma işleçleri de bu amaçla açıkça sağlanır.

Bu özellik, diğer avantajların ya da sorguların daha hızlı yürütülmesini sağlar. Öğelerin veya özniteliklerin adı filtrelendiğinde, koşullarda ifade edilen karşılaştırmalar değer karşılaştırmasını değil kimlik karşılaştırmasını kullanır. İki başvurunun aslında aynı nesneye başvurduğunu belirlemek, iki dizeyi karşılaştırmaktan çok daha hızlıdır.