Aracılığıyla paylaş


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

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

Bu sınıf, ad alanlarının XML yapısını temsil eder.

Her XName öğesinin bir XNamespaceiçerir. Bir öğe bir ad alanında olmasa bile, öğesinde XName yine de bir ad alanı (. XNamespace.None) bulunur. XName.Namespace özelliğinin olmaması nullgaranti edilir.

XNamespace nesnesi oluşturma

Nesne oluşturmanın XNamespace en yaygın yolu, nesneye yalnızca bir dize atamaktır. Daha sonra ekleme işlecinin geçersiz kılmasını kullanarak ad alanını yerel bir adla birleştirebilirsiniz. Aşağıdaki örnekte bu deyim gösterilmektedir:

XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root", "Content");
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", "Content")
Console.WriteLine(root)

Bununla birlikte, Visual Basic'te genellikle aşağıdaki gibi genel bir varsayılan ad alanı bildirirsiniz:

Imports <xmlns='http://www.adventure-works.com'>

Module Module1
    Sub Main()
        Dim root As XElement = _
            <Root>Content</Root>
        Console.WriteLine(root)
    End Sub
End Module

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

<Root xmlns="http://www.adventure-works.com">Content</Root>

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

Daha fazla bilgi ve örnek için bkz. C# dilinde ad alanlarıyla belge oluşturma (LINQ to XML).

Visual Basic'te ad alanlarını kullanma hakkında daha fazla bilgi için bkz. XML ad alanlarıyla çalışma.

Ad alanı ön eklerini denetleme

Ad alanı bildiren bir öznitelik oluşturursanız, öznitelikte belirtilen ön ek serileştirilmiş XML'de kalıcı hale getirilir. Ön eki olan bir ad alanı bildiren bir öznitelik oluşturmak için, özniteliğin adının ad alanının ve özniteliğin Xmlnsadının ad alanı öneki olduğu bir öznitelik oluşturursunuz. özniteliğinin değeri, ad alanının URI'dir. Aşağıdaki örnekte bu deyim gösterilmektedir:

XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
    new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
    "Content");
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", _
    New XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"), _
    "Content")
Console.WriteLine(root)

Visual Basic'te, ad alanı ön eklerini denetlemek için bir ad alanı düğümü oluşturmak yerine genellikle genel ad alanı bildirimi kullanırsınız:

Imports <xmlns:aw='http://www.adventure-works.com'>

Module Module1
    Sub Main()
        Dim root As XElement = _
            <aw:Root>Content</aw:Root>
        Console.WriteLine(root)
    End Sub
End Module

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

<aw:Root xmlns:aw="http://www.adventure-works.com">Content</aw:Root>

Daha fazla bilgi için bkz . Ad alanı ön eklerini denetleme.

Varsayılan ad alanı oluşturma

Ad alanı olacak bir öznitelik oluşturulurken, öznitelik adında "xmlns" özel değeri varsa, XML ağacı seri hale getirildiğinde, ad alanı varsayılan ad alanı olarak bildirilir. Adı "xmlns" olan özel öznitelik herhangi bir ad alanında değildir. özniteliğinin değeri ad alanı URI'dir.

Aşağıdaki örnek, ad alanının varsayılan ad alanı olacağı şekilde bildirilen bir öznitelik içeren bir XML ağacı oluşturur:

XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
    new XAttribute("xmlns", "http://www.adventure-works.com"),
    new XElement(aw + "Child", "content")
);
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", _
    New XAttribute("xmlns", "http://www.adventure-works.com"), _
    New XElement(aw + "Child", "content") _
)
Console.WriteLine(root)

Visual Basic'te, varsayılan ad alanı oluşturmak için bir ad alanı düğümü oluşturmak yerine genellikle genel bir varsayılan ad alanı bildirimi kullanırsınız:

Imports <xmlns='http://www.adventure-works.com'>

Module Module1
    Sub Main()
        Dim root As XElement = _
            <Root>
                <Child>content</Child>
            </Root>
        Console.WriteLine(root)
    End Sub
End Module

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

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

XNamespace atomization

XNamespace nesnelerin atomize edilmesi garanti edilir; başka bir ifadeyle, iki XNamespace nesne tam olarak aynı URI'ye sahipse aynı örneği paylaşır. Eşitlik ve karşılaştırma işleçleri bu amaçla açıkça sağlanır.

Genişletilmiş adları kullanma

Ad alanı ve yerel ad belirtmenin bir diğer yolu da biçiminde {namespace}namegenişletilmiş bir ad kullanmaktır:

XElement e = new XElement("{http://www.adventure-works.com}Root",
     new XAttribute("{http://www.adventure-works.com}Att", "content")
);
Console.WriteLine(e);
Dim e As XElement = New XElement("{http://www.adventure-works.com}Root", _
     New XAttribute("{http://www.adventure-works.com}Att", "content") _
)
Console.WriteLine(e)

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

<Root p1:Att="content" xmlns:p1="http://www.adventure-works.com" xmlns="http://www.adventure-works.com" />

Bu yaklaşımın performans üzerindeki etkileri vardır. GENIŞLETILMIŞ ad içeren bir dizeyi LINQ to XML'ye her geçirdiğinizde, adı ayrıştırması, atomize ad alanını bulması ve atomize edilen adı bulması gerekir. Bu işlem CPU süresini alır. Performans önemliyse farklı bir yaklaşım kullanmak isteyebilirsiniz.

Visual Basic ile önerilen yaklaşım, genişletilmiş adların kullanılmasını içermeyen XML değişmez değerlerini kullanmaktır.