2011-03-31 15 views
9

BuLINQ to XML - bir önek ile torunlara erişme

<vs:BioData> 
<vs:Name>Name</vs:Name> 
<vs:Address>address</vs:Address> 
<vs:Zip>Zip</vs:zip> 
</vs:BioData> 

gibi bir örnek xml dosyası var Tüm düğümlerin bir önek değeri var ve herkes bana bu dosyayı İsim ve Adres Bilgileri'ni okumak için nasıl ayrıştıracağımı söyleyebilir mi? LINQ için çok yeni. Bu konuda herhangi bir yardım büyük takdir edilecektir.

Teşekkürler!

cevap

10

Ad alanının ne olduğunu bilmeniz gerekir. Sen XNamespace kullanarak sorgulayabilir

xmlns:vs="http://some_url_here" 

:

XNamespace vs = "http://some_url_here"; 
var names = doc.Descendants(vs + "Name") 
       .Select(x => (string) x) 
       .ToList(); 

+ burada aslında bir XName bir XNamespace ve bir dize dönüştürmektedir böyle bir şeyle daha önce ilan edilmiş olacaktır.

5

örneğin XML belgesinin başlığında bir ad alanına aktarılması gerektiğini "vs" öneki: Bu gibi

<FooDocument xmlns:vs="http://schemas.example.com/vs"> 

Sonra bir XNamespace kullanarak LINQ ile bu öğeleri seçebilirsiniz:

XNamespace vs = "http://schemas.example.com/vs"; 

var names = myXDoc.Root.Descendants(vs + "Name"); 

XNamespace ve XName türlerinin tümü, dizelerden örtük dönüştürmeyi destekler.

+0

Lawrence Wenham Çok teşekkürler koştu! – Venki

0

Bu gönderinin gerçekten eski olduğunu biliyorum, ancak bazı ek bilgi vermek istedim. Daha karmaşık bir xml dosyasıyla ilgili yardım ararken bu soruya yöneldim ve yanıt verdim. Xml'mn birkaç isim alanı vardı ve yuvalanmış ad alanları da vardı. Ben O çok yardımcı oldu bu link

bulunan önerilerle benim sorunu çözmek başardı ve durumda birisi buraya göndermeye istediğimiz başka aynı sorun haline