2010-11-29 10 views
5

इस संरचना को देखते हुए:LINQ से XML का उपयोग करते समय एक्सएमएल में तत्व क्या है या नहीं?

 <root> 
    <user> 
      <userName>user1</userName> 
      <userImageLocation>/user1.png</userImageLocation> 
    </user> 
    <user> 
      <userName>user2</userName> 
    </user> 
</root> 

public class User 
{ 
    public string UserName {get; set; } 
    public string UserImageLocation {get; set; } 
} 

मैं XML फ़ाइल से डेटा प्राप्त करने के लिए LINQ से XML का उपयोग करता हूं, जैसे:

XDocument document = XDocument.Parse(xmlFile); 
List<User> listOfUsers = 
(from user in document.Descendants("user") 
select new User { 
    UserName = user.Element("userName"), 
    UserImageLocation = user.Element("userImageLocation"), 
} 
).ToList<User>(); 

मेरी समस्या यह है कि सभी उपयोगकर्ता तत्व में उपयोगकर्ता इमेजेशन नहीं होता है, और जब उपयोगकर्ता इमेजलोकेशन को पढ़ने की कोशिश कर रहा है, यह एक अपवाद फेंकता है।

मैं कैसे जांच सकता हूं कि कोई XML तत्व मौजूद है या नहीं, और यदि यह मौजूद है, तो इसे पढ़ें?

उत्तर

7

आपका वर्तमान कोड संकलित नहीं होगा, क्योंकि आप एक स्ट्रिंग प्रॉपर्टी में XElement असाइन करने का प्रयास कर रहे हैं। मेरा अनुमान है कि आप इसे XElement.Value प्रॉपर्टी का उपयोग स्ट्रिंग में बदलने के लिए कर रहे हैं।

XDocument document = XDocument.Parse(xmlFile); 
List<User> listOfUsers = 
(from user in document.Descendants("user") 
select new User { 
    UserName = (string) user.Element("userName"), 
    UserImageLocation = (string) user.Element("userImageLocation"), 
} 
).ToList<User>(); 

ध्यान दें कि यह जो डॉट नोटेशन का इस्तेमाल करके उनकी अधिक पठनीय है उन स्थितियों में से एक है: कि के बजाय, स्पष्ट स्ट्रिंग रूपांतरण है, जो अशक्त वापस आ जाएगी अगर आप इसे "पर" एक अशक्त XElement संदर्भ फोन का उपयोग करें:

XDocument document = XDocument.Parse(xmlFile); 
List<User> listOfUsers = document 
    .Descendants("user") 
    .Select(user => new User { 
     UserName = (string) user.Element("userName"), 
     UserImageLocation = (string) user.Element("userImageLocation") }) 
    .ToList(); 
3

कोड नीचे कोशिश

UserImageLocation = user.Element("userImageLocation")!=null?user.Element("userImageLocation").Value:string.Empty 
संबंधित मुद्दे