2010-03-24 22 views
22

Bir düğümün gerçekte belirli bir özelliği olup olmadığını nasıl görebilir ve görebilirim? Bu gibi görünen birkaç düğüm içeren bir XML dosyası var: PrefixValue mevcut olduğunda, bir dizeye bu özelliğindeki değeri öne eklemek gerekiyordu ve o amXML düğümünün Linq C# ile özniteliği var mı kontrol edin?

<Field From="OldString" To="NewString" PrefixValue="OptionalAttribute" /> 

Şimdi: Sorun bu yapı aşağıdaki gibi görünecektir bazı düğümlere değiştirilmesi hakkında olmasıdır çok zor değil, ancak bir düğüm için PrefixValue özniteliğinin mevcut olup olmadığını görmeye çalıştığımda bazı sorunlarla karşılaştım. PrefixValue'un olmadığı durumlarda, PrefixValue özniteliği düğümde mevcut olmayacaktır. Özniteliğin bir Linq ifadesiyle var olup olmadığını kontrol etmeye nasıl giderim?

cevap

47

Ne yapmak istediğinize bağlı. Eğer bir projeksiyonda kullanmak istiyorsanız, kullanabilirsiniz:

özniteliği yoksa yararlı olan boş dönecektir
(string) element.Attribute("PrefixValue") 

. Yukarıdaki kod nitelik varsa denetleme dikkatli olmalıdır

where element.Attribute("PrefixValue") != null 
+0

Temel olarak, öznitelik ilk adım olarak tamamen eksikse, yalnızca döndürülecek bir boş değer istiyorum. Teşekkürler! – Henric

+1

Hata alıyorum XNode öznitelik özelliği veya yöntemine sahip değil ... – Ziggler

+0

@Ziggler: Bu bir "XElement" yerine bir "XNode" kullandığınızı önerir. Kodunuzun hiçbirini göremiyoruz ama temel olarak 'XElement' kullanmak istiyorsun ... –

3
if ((string)level1.Attribute("customer_code") != null) 
{ 
    newBox.customer_code = (string)level1.Attribute("customer_code").Value; 
} 

: Bir yerde yan tümcesinde İstiyorsan

gibi bir şey kullanın.

If ifadesi olmadan, bir nesne hatası ayarlanmamış bir nesne alırsınız.

İlgili konular