2011-11-10 20 views
21

मैं कुछ है कि मेरे पास एक XNode लौटा रहा है जो इस तरह दिखता है कोड है:पढ़ना मूल्यों

<File> 
    <Component>Main</Component> 
    <Path>C:\Main\</Path> 
    <FileName>main.txt</FileName> 
</File> 

मैं कुछ सी # कोड है कि पथ का मूल्य बाहर निकलने के लिए सक्षम हो जाएगा की जरूरत है उदाहरण के लिए (सी: \ मुख्य)। मुझे पता है कि अगर मैं एक XML नोड उपयोग कर रहा था मैं इसे इस तरह कर सकता है:

String filePath = xmlNode["Path"].InnerText; 

किसी को भी पता है क्या बराबर एक XNode के लिए हो सकता है? किसी भी प्रकार की मदद की बेहद सराहना की जाती है!

उत्तर

42

आप इसे एक XElement बजाय एक XNode लौटने के लिए है है? एक XElement के साथ यह एक XNode साथ की तुलना में आसान है:

string filePath = fileElement.Element("Path").Value; 

कि पहलेPath तत्व मिल जाएगा, और अगर कोई नहीं कर रहे हैं एक NullReferenceException फेंक देते हैं। एक वैकल्पिक अगर आप null प्राप्त करने के लिए खुश हैं, अगर वहाँ नहीं कर रहे हैं किसी भी होगा:

string filePath = (string) fileElement.Element("Path"); 

तुम सच में XNode के साथ फंस रहे हैं, तो आप या तो XElement या संभवतः XContainer को कास्ट करने के लिए होगा। मेरी उदाहरण

XElement xtr = XElement.Load("path/to/your/xml/file"); 
String filePath = xtr.Descendants("Path").Single().Value; 
+0

इम अपवाद हो रही। क्या आपके पास इसका समाधान है? अग्रिम धन्यवाद – ot0

+0

@ ot0: अधिक संदर्भ के बिना नहीं, नहीं। मेरा सुझाव है कि आप एक उदाहरण के साथ एक नया सवाल पूछें। –

+0

XElement xelm = (XElement) XNodeObject; वापसी अपवाद – ot0

0

आप इसका उपयोग कर सकते XPathSelectElement XNode वस्तु पर इस तरह:

String component = xmlNode.XPathSelectElement("Component"); 
String path = xmlNode.XPathSelectElement("Path"); 
String fileName = xmlNode.XPathSelectElement("FileName"); 
7

आप XElement में अपने XNode परिवर्तित कर सकते हैं उसके गुण के लिए उपयोग करने के लिए,:

XNode lastNode = myXElement.LastNode; 

//if I want to get the 'ID' attribute 
string id = (lastNode as XElement).Attribute("ID").Value; 
+0

खराब नहीं है? – batbaatar

+0

अहह, धन्यवाद। अब मैं XElement ठीक काम करता हूं, हालांकि। – AndrewRalon

0

आप System.Xml.XPath आयात करते हैं तो आप उपयोग कर सकते

0

XElement के लिए कास्टिंग XNode individ के लिए काम करता है इसके मूल्य या विशेषताओं को पुनर्प्राप्त करने के लिए ual तत्व। लेकिन आप नेस्टेड तत्व प्राप्त करने के लिए myXelement.Elements ("XXX") का उपयोग करने में सक्षम नहीं होंगे। इसके लिए आप xmlNode.Nodes() का उपयोग कर सकते हैं।

यह काम करना चाहिए: जब XElement को कास्ट करने के लिए कोशिश कर रहा

var nodes = xmlNode.Nodes();//Get all nodes under 'File' 
var fileNameNode = nodes.Where(el => ((XElement)el).Name.LocalName == "FileName") 
.FirstOrDefault(); 
string filePath = ((XElement)fileNameNode).Value; 
संबंधित मुद्दे