Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, C# dilinde ad alanları olan belgelerin nasıl oluşturulacağı gösterilmektedir.
Örnek: Varsayılan ad alanını bildirme ve başlatma
Bir ad alanında bir öğe veya öznitelik oluşturmak için önce bir XNamespace nesnesi bildirir ve başlatırsınız. Daha sonra ad alanını dize olarak ifade edilen yerel adla birleştirmek için toplama işleci aşırı yüklemesini kullanırsınız.
Aşağıdaki örnek, bir ad alanına sahip bir belge oluşturur. Varsayılan olarak, LINQ to XML bu belgeyi varsayılan ad alanıyla serileştirir.
// Create an XML tree in a namespace.
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
new XElement(aw + "Child", "child content")
);
Console.WriteLine(root);
Bu örnek aşağıdaki çıkışı oluşturur:
<Root xmlns="http://www.adventure-works.com">
<Child>child content</Child>
</Root>
Örnek: Ad alanı ve özniteliği olan bir belge oluşturma
Aşağıdaki örnek, bir ad alanına sahip bir belge oluşturur. Ayrıca ad alanını bir ad alanı ön eki ile bildiren bir öznitelik de oluşturur. Ön eki olan bir ad alanı bildiren bir öznitelik oluşturmak için, özniteliğin adının ad alanı öneki olduğu ve bu adın Xmlns ad alanında olduğu bir öznitelik oluşturursunuz. Bu özniteliğin değeri, ad alanının URI'dir.
// Create an XML tree in a namespace, with a specified prefix
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
new XElement(aw + "Child", "child content")
);
Console.WriteLine(root);
Bu örnek aşağıdaki çıkışı oluşturur:
<aw:Root xmlns:aw="http://www.adventure-works.com">
<aw:Child>child content</aw:Child>
</aw:Root>
Örnek: Biri ön ekli olmak üzere iki ad alanına sahip bir belge oluşturma
Aşağıdaki örnekte, iki ad alanı içeren bir belgenin oluşturulması gösterilmektedir. Biri varsayılan ad alanı, diğeri ön ekli bir ad alanıdır.
Kök öğeye ad alanı öznitelikleri eklenerek, ad alanları seri hale getirilir, böylece http://www.adventure-works.com varsayılan ad alanıdır ve www.fourthcoffee.comfcön ekiyle serileştirilir. Varsayılan ad alanını bildiren bir öznitelik oluşturmak için, ad alanı olmadan xmlnsadlı bir öznitelik oluşturursunuz. özniteliğinin değeri varsayılan ad alanı URI'dir.
Varsayılan ad alanı bildirimi kapsam dahilindeyse, yerel adlarını ilgili XNamespace nesnesine ön ekleyerek alt XElement nesnelere uygulanır. Öte yandan, varsayılan ad alanı bildirimleri doğrudan öznitelik adlarına uygulanmaz. Bu nedenle, varsayılan ad alanında XAttribute nesneler, yerel adlarına karşılık gelen XNamespace nesnesine ön ek tarafından tanımlanır.
// The http://www.adventure-works.com namespace is forced to be the default namespace.
XNamespace aw = "http://www.adventure-works.com";
XNamespace fc = "www.fourthcoffee.com";
XElement root = new XElement(aw + "Root",
new XAttribute("xmlns", "http://www.adventure-works.com"),
new XAttribute(XNamespace.Xmlns + "fc", "www.fourthcoffee.com"),
new XElement(fc + "Child",
new XElement(aw + "DifferentChild", "other content")
),
new XElement(aw + "Child2", "c2 content",
new XAttribute("DefaultNs", "default namespace"),
new XAttribute(fc + "PrefixedNs", "prefixed namespace")
),
new XElement(fc + "Child3", "c3 content",
new XAttribute("DefaultNs", "default namespace"),
new XAttribute(fc + "PrefixedNs", "prefixed namespace")
)
);
Console.WriteLine(root);
Bu örnek aşağıdaki çıkışı oluşturur:
<Root xmlns="http://www.adventure-works.com" xmlns:fc="www.fourthcoffee.com">
<fc:Child>
<DifferentChild>other content</DifferentChild>
</fc:Child>
<Child2 DefaultNs="default namespace" fc:PrefixedNs="prefixed namespace">c2 content</Child2>
<fc:Child3 DefaultNs="default namespace" fc:PrefixedNs="prefixed namespace">c3 content</fc:Child3>
</Root>
Örnek: Her ikisi de ön ekli iki ad alanına sahip bir belge oluşturma
Aşağıdaki örnek, her ikisi de ad alanı ön eklerine sahip iki ad alanı içeren bir belge oluşturur.
XNamespace aw = "http://www.adventure-works.com";
XNamespace fc = "www.fourthcoffee.com";
XElement root = new XElement(aw + "Root",
new XAttribute(XNamespace.Xmlns + "aw", aw.NamespaceName),
new XAttribute(XNamespace.Xmlns + "fc", fc.NamespaceName),
new XElement(fc + "Child",
new XElement(aw + "DifferentChild", "other content")
),
new XElement(aw + "Child2", "c2 content"),
new XElement(fc + "Child3", "c3 content")
);
Console.WriteLine(root);
Bu örnek aşağıdaki çıkışı oluşturur:
<aw:Root xmlns:aw="http://www.adventure-works.com" xmlns:fc="www.fourthcoffee.com">
<fc:Child>
<aw:DifferentChild>other content</aw:DifferentChild>
</fc:Child>
<aw:Child2>c2 content</aw:Child2>
<fc:Child3>c3 content</fc:Child3>
</aw:Root>
Örnek: Genişletilmiş adları kullanarak ad alanı oluşturma
Aynı sonucu elde etmenin başka bir yolu, XNamespace nesnesi bildirmek ve oluşturmak yerine genişletilmiş adlar kullanmaktır.
Bu yaklaşımın performans üzerindeki etkileri vardır. GENIŞLETILMIŞ ad içeren bir dizeyi LINQ to XML'ye her geçirdiğinizde, LINQ to XML adı ayrıştırmalı, atomize edilmiş ad alanını ve atomize edilmiş adı bulmalıdır. Bu işlem CPU süresini alır. Performans önemliyse, açıkça bir XNamespace nesnesi bildirmek ve kullanmak isteyebilirsiniz.
Performans önemli bir sorunsa daha fazla bilgi için bkz. XName Nesnelerinin Önceden Atomizasyonu .
// Create an XML tree in a namespace, with a specified prefix
XElement root = new XElement("{http://www.adventure-works.com}Root",
new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
new XElement("{http://www.adventure-works.com}Child", "child content")
);
Console.WriteLine(root);
Bu örnek aşağıdaki çıkışı oluşturur:
<aw:Root xmlns:aw="http://www.adventure-works.com">
<aw:Child>child content</aw:Child>
</aw:Root>