Bagikan melalui


Kelas System.Xml.Linq.XNamespace

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Kelas ini mewakili konstruksi XML namespace.

Setiap XName berisi XNamespace. Bahkan jika elemen tidak berada di namespace, elemen XName masih berisi namespace, XNamespace.None. Properti XName.Namespace dijamin tidak .null

Membuat objek XNamespace

Cara paling umum untuk membuat XNamespace objek adalah dengan hanya menetapkan string ke objek tersebut. Anda kemudian dapat menggabungkan namespace dengan nama lokal dengan menggunakan penimpaan operator penambahan. Contoh berikut menunjukkan idiom ini:

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)

Namun, di Visual Basic, Anda biasanya akan mendeklarasikan namespace default global, sebagai berikut:

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

Contoh ini menghasilkan output berikut:

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

Menetapkan string ke XNamespace menggunakan konversi implisit dari String.

Lihat Cara membuat dokumen dengan namespace di C# (LINQ ke XML) untuk informasi dan contoh selengkapnya.

Lihat Bekerja dengan namespace XML untuk informasi selengkapnya tentang menggunakan namespace di Visual Basic.

Mengontrol awalan namespace layanan

Jika Anda membuat atribut yang mendeklarasikan namespace layanan, awalan yang ditentukan dalam atribut akan dipertahankan dalam XML serial. Untuk membuat atribut yang mendeklarasikan namespace dengan awalan, Anda membuat atribut di mana namespace nama atribut adalah Xmlns, dan nama atribut adalah awalan namespace. Nilai atribut adalah URI dari namespace. Contoh berikut menunjukkan idiom ini:

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)

Di Visual Basic, alih-alih membuat node namespace untuk mengontrol awalan namespace, Anda biasanya akan menggunakan deklarasi namespace layanan global:

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

Contoh ini menghasilkan output berikut:

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

Untuk informasi selengkapnya, lihat Cara mengontrol awalan namespace layanan.

Membuat namespace default

Saat membuat atribut yang akan menjadi namespace, jika nama atribut memiliki nilai khusus "xmlns", maka ketika pohon XML diserialisasikan, namespace akan dideklarasikan sebagai namespace default. Atribut khusus dengan nama "xmlns" itu sendiri tidak ada di namespace apa pun. Nilai atribut adalah URI namespace layanan.

Contoh berikut membuat pohon XML yang berisi atribut yang dideklarasikan sedimikian rupa sehingga namespace layanan akan menjadi namespace default:

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)

Di Visual Basic, alih-alih membuat simpul namespace untuk membuat namespace default, Anda biasanya akan menggunakan deklarasi namespace default global:

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

Contoh ini menghasilkan output berikut:

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

Atomisasi XNamespace

XNamespace objek dijamin akan diatomisasi; artinya, jika dua XNamespace objek memiliki URI yang sama persis, mereka akan berbagi instans yang sama. Operator kesetaraan dan perbandingan disediakan secara eksplisit untuk tujuan ini.

Menggunakan nama yang diperluas

Cara lain untuk menentukan namespace layanan dan nama lokal adalah dengan menggunakan nama yang diperluas dalam formulir {namespace}name:

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)

Contoh ini menghasilkan output berikut:

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

Pendekatan ini memiliki implikasi performa. Setiap kali Anda meneruskan string yang berisi nama yang diperluas ke LINQ ke XML, string harus mengurai nama, menemukan namespace layanan yang diatomisasi, dan menemukan nama yang diatomisasi. Proses ini membutuhkan waktu CPU. Jika performa penting, Anda mungkin ingin menggunakan pendekatan yang berbeda.

Dengan Visual Basic, pendekatan yang direkomendasikan adalah menggunakan literal XML, yang tidak melibatkan penggunaan nama yang diperluas.