Ad alanında tüm düğümleri bulma (LINQ to XML)
Söz konusu ad alanında tüm düğümleri bulmak için her öğenin veya özniteliğin ad alanına göre filtreleyebilirsiniz.
Örnek: İki ad alanına sahip bir XML ağacı oluşturma ve bir ad alanının içeriğini yazdırma
Aşağıdaki örnek, iki ad alanına sahip bir XML ağacı oluşturur. Daha sonra ağaçta yinelenir ve bu ad alanlarının birindeki tüm öğelerin ve özniteliklerin adlarını yazdırır.
string markup = @"<aw:Root xmlns:aw='http://www.adventure-works.com' xmlns:fc='www.fourthcoffee.com'>
<fc:Child1>abc</fc:Child1>
<fc:Child2>def</fc:Child2>
<aw:Child3>ghi</aw:Child3>
<fc:Child4>
<fc:GrandChild1>jkl</fc:GrandChild1>
<aw:GrandChild2>mno</aw:GrandChild2>
</fc:Child4>
</aw:Root>";
XElement xmlTree = XElement.Parse(markup);
Console.WriteLine("Nodes in the http://www.adventure-works.com namespace");
IEnumerable<XElement> awElements =
from el in xmlTree.Descendants()
where el.Name.Namespace == "http://www.adventure-works.com"
select el;
foreach (XElement el in awElements)
Console.WriteLine(el.Name.ToString());
Imports <xmlns:aw="http://www.adventure-works.com">
Imports <xmlns:fc="www.fourthcoffee.com">
Module Module1
Sub Main()
Dim xmlTree As XElement = _
<aw:Root>
<fc:Child1>abc</fc:Child1>
<fc:Child2>def</fc:Child2>
<aw:Child3>ghi</aw:Child3>
<fc:Child4>
<fc:GrandChild1>jkl</fc:GrandChild1>
<aw:GrandChild2>mno</aw:GrandChild2>
</fc:Child4>
</aw:Root>
Console.WriteLine("Nodes in the http://www.adventure-works.com namespace")
Dim awElements As IEnumerable(Of XElement) = _
From el In xmlTree.Descendants() _
Where (el.Name.Namespace = GetXmlNamespace(aw)) _
Select el
For Each el As XElement In awElements
Console.WriteLine(el.Name.ToString())
Next
End Sub
End Module
Bu örnek aşağıdaki çıkışı oluşturur:
Nodes in the http://www.adventure-works.com namespace
{http://www.adventure-works.com}Child3
{http://www.adventure-works.com}GrandChild2
Örnek: Bir dosyada bulunan iki ad alanından birinden XML ağacı oluşturma
XML belgesi Örnek XML dosyası: Birleştirilmiş satınalma siparişleri iki farklı ad alanında satın alma siparişleri içerir. Aşağıdaki sorgu, bunlardan birinin öğelerinden yeni bir ağaç oluşturur.
XDocument cpo = XDocument.Load("ConsolidatedPurchaseOrders.xml");
XNamespace aw = "http://www.adventure-works.com";
XElement newTree = new XElement("Root",
from el in cpo.Root.Elements()
where el.Name.Namespace == aw
select el
);
Console.WriteLine(newTree);
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim cpo As XDocument = XDocument.Load("ConsolidatedPurchaseOrders.xml")
Dim newTree As XElement = _
<Root>
<%= From el In cpo.Root.Elements() _
Where el.Name.Namespace = GetXmlNamespace(aw) _
Select el %>
</Root>
Console.WriteLine(newTree)
End Sub
End Module
Bu örnek aşağıdaki çıkışı oluşturur:
<Root>
<aw:PurchaseOrder PONumber="11223" Date="2000-01-15" xmlns:aw="http://www.adventure-works.com">
<aw:ShippingAddress>
<aw:Name>Chris Preston</aw:Name>
<aw:Street>123 Main St.</aw:Street>
<aw:City>Seattle</aw:City>
<aw:State>WA</aw:State>
<aw:Zip>98113</aw:Zip>
<aw:Country>USA</aw:Country>
</aw:ShippingAddress>
<aw:BillingAddress>
<aw:Name>Chris Preston</aw:Name>
<aw:Street>123 Main St.</aw:Street>
<aw:City>Seattle</aw:City>
<aw:State>WA</aw:State>
<aw:Zip>98113</aw:Zip>
<aw:Country>USA</aw:Country>
</aw:BillingAddress>
<aw:DeliveryInstructions>Ship only complete order.</aw:DeliveryInstructions>
<aw:Item PartNum="LIT-01">
<aw:ProductID>Litware Networking Card</aw:ProductID>
<aw:Qty>1</aw:Qty>
<aw:Price>20.99</aw:Price>
</aw:Item>
<aw:Item PartNum="LIT-25">
<aw:ProductID>Litware 17in LCD Monitor</aw:ProductID>
<aw:Qty>1</aw:Qty>
<aw:Price>199.99</aw:Price>
</aw:Item>
</aw:PurchaseOrder>
</Root>
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.