2011-10-14 12 views
7

Necesito leer un archivo XML de App_Data en MVC3 de acuerdo con la acción que el usuario está accediendo en este momento.¿Cómo se lee un archivo xml en App_Data con .NET MVC3 Framework según el controlador?

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

¿Cuál sería la mejor manera de conseguir que <item> acuerdo con el usuario para acceder a la acción que está?

EDITAR


olvidó mencionar que el XML se puede acceder solamente por 1 controlador. Así que el nombre del archivo es [controlador] .xml

Respuesta

10

Se puede usar un XDocument y el método XPathSelectElement extensión a analizar 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

Hm respuesta agradable, pero supongo que no hay una mágica forma nativa C# MVC3 hacer esto y tratar con el xml como objetos y propiedades. –

+0

@Guilherme Costa, por supuesto que hay una manera mágica. Todo lo que tiene que hacer es definir un modelo de vista que coincida con la estructura XML y luego deserializar el XML de nuevo a este modelo de vista. Podría usar la clase XmlSerializer por ejemplo. –

+0

Voy a intentar eso. Gracias –

Cuestiones relacionadas