2016-09-07 8 views
5

मैं नीचे की तरह एक XML फ़ाइल है:अपवाद: XPath अभिव्यक्ति अप्रत्याशित प्रकार के लिए मूल्यांकन System.Xml.Linq.XAttribute

<Employees> 
    <Employee Id="ABC001"> 
    <Name>Prasad 1</Name> 
    <Mobile>9986730630</Mobile> 
    <Address Type="Perminant"> 
     <City>City1</City> 
     <Country>India</Country> 
    </Address> 
    <Address Type="Temporary"> 
     <City>City2</City> 
     <Country>India</Country> 
    </Address> 
    </Employee> 

अब मैं सब पता प्रकार के मिल चाहते हैं।

मैंने XPath का उपयोग करके नीचे की तरह कोशिश की और मुझे अपवाद मिल रहा है।

var xPathString = @"//Employee/Address/@Type"; 
doc.XPathSelectElements(xPathString); // doc is XDocument.Load("xml file Path") 

अपवाद: XPath अभिव्यक्ति अप्रत्याशित प्रकार System.Xml.Linq.XAttribute करने का मूल्यांकन किया।

क्या मेरे XPath के साथ कोई समस्या है?

उत्तर

8

आपका XPath ठीक (यद्यपि आप इसे और अधिक चयनात्मक होना चाहते हो सकता है) है, लेकिन आप को समायोजित करने के लिए कैसे आप इसे का मूल्यांकन है ...

XPathSelectElement(), जैसा कि इसके नाम का तात्पर्य, केवल तत्वों का चयन किया जाना चाहिए ।

XPathEvaluate() अधिक सामान्य है और विशेषताओं के लिए उपयोग किया जा सकता है। आप परिणामों पर गिन सकते हैं, या पहले पकड़ लें:

var type = ((IEnumerable<object>)doc.XPathEvaluate("//Employee/Address/@Type")) 
            .OfType<XAttribute>() 
            .Single() 
            .Value; 
संबंधित मुद्दे