2011-10-14 2 views
7

मुझे उस क्रिया के अनुसार एमवीसी 3 में ऐप_Data से एक एक्सएमएल फ़ाइल पढ़ने की जरूरत है, जिसे उपयोगकर्ता इस समय एक्सेस कर रहा है।नियंत्रक के अनुसार .NET MVC3 फ्रेमवर्क के साथ App_Data में xml फ़ाइल को कैसे पढ़ा जाए?

<xml> 
    <actions> 
    <item action="index"> 
     <add url="www.stackoverflow.com" description="This site it's for learning purpouses" /> 
    </item> 
    </actions> 
</xml> 

क्या कि <item> कार्रवाई उपयोगकर्ता उस तक पहुंचने में है के अनुसार होने का सबसे अच्छा तरीका क्या होगा?

संपादित


कि XML केवल 1 नियंत्रक द्वारा पहुँचा जा सकता उल्लेख करने के लिए भूल। तो फ़ाइल नाम यह [नियंत्रक] .xml

उत्तर

10

आप एक XDocument और XPathSelectElement विस्तार विधि का उपयोग कर सकता है XML को पार्स करने के लिए:

public ActionResult Index() 
{ 
    string action = RouteData.GetRequiredString("action"); 
    string controller = RouteData.GetRequiredString("controller"); 
    string appDataPath = Server.MapPath("~/app_data"); 
    string file = Path.Combine(appDataPath, controller + ".xml"); 
    var xpath = "//item[@action='" + action + "']"; 
    var item = XDocument.Load(file).XPathSelectElement(xpath); 
    if (item != null) 
    { 
     var add = item.Element("add"); 
     var url = add.Attribute("url").Value; 
     var description = add.Attribute("description").Value; 
    } 
    ... 
} 
+0

हम्म अच्छा जवाब है, लेकिन मुझे लगता है कि वहाँ एक जादुई देशी तरीका C# mvc3 नहीं है ऐसा करें और एक्सएमएल के साथ वस्तुओं और गुणों के रूप में सौदा करें। –

+0

@ गुइलेरमे कोस्टा, बेशक कि एक जादुई तरीका है। आपको केवल एक दृश्य मॉडल को परिभाषित करना है जो एक्सएमएल संरचना से मेल खाता है और उसके बाद एक्सएमएल को इस दृश्य मॉडल में deserialize। उदाहरण के लिए आप XmlSerializer क्लास का उपयोग कर सकते हैं। –

+0

मैं कोशिश कर रहा हूँ। धन्यवाद –

संबंधित मुद्दे