Soru XML-düğümünün Linq C # ile özniteliği olup olmadığını kontrol edin.


Bir düğümün aslında 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 dosyam var:

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

Çok uzak çok iyi. Sorun şu ki bu yapı bazı düğümlerin şuna benzeyecek şekilde değiştirilmek üzere:

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

Şimdi, PrefixValue mevcut olduğunda, bu öznitelikteki değeri bir dizeye eklemem gerekiyordu ve bu çok zor değil, ancak PrefixValue özniteliğinin hiç bir için var olup olmadığını görmeye çalıştığımda bazı sorunlarla karşılaştım. düğü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?


25
2018-03-24 10:23


Menşei




Cevaplar:


Peki, ne yapmak istediğine bağlı. Bir projeksiyonda kullanmak isterseniz, şunları kullanabilirsiniz:

(string) element.Attribute("PrefixValue")

Öznitelik eksikse null değerini döndürür, bu da yararlıdır.

Bir yerde yan tümce istiyorsanız, şöyle bir şey kullanın:

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

50
2018-03-24 10:26



Aslında, öznitelik ilk adım olarak tamamen eksikse, yalnızca iade edilecek bir değer istiyorum. Teşekkürler! - Henric
XNode öznitelik özelliği veya yöntemi yok hata alıyorum ... - Ziggler
@Ziggler: Bu, bir XNode bir değil XElement. Hiçbir kodunuzu göremiyoruz, ancak temelde kullanmak istiyorsunuz XElement... - Jon Skeet
XmlDocument ise, XNode öznitelik özelliği veya yöntemi olmayan bir hata alıyorum ... ve XDocument ise, XElement için öznitelik yöntemim var ancak dize girdisi değil .. - Ziggler
@Ziggler: Ne demek istediğimi bilmiyorum korkuyorum, ama bize kodunuzu gösteren yeni bir soru sormanız gerektiği gibi geliyor. - Jon Skeet


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

Yukarıdaki kod, özniteliğin var olup olmadığını kontrol etmelidir.

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


4
2018-05-04 14:32