2012-07-01 1 views
1

J'ai une application C# MVC que je dois transmettre les données suivantes à une vue:C# MVC: Comment les valeurs d'extrait de XML et passer pour voir

  <versions> 
       <product>true</product> 
       <type>city</type> 
       <factory name="Demme" url="http://test1.com" thumbnail="http://test3.com/img1" interval="10" /> 
       <factory name="Vollick" url="http://test2.com" thumbnail="http://test3.com/img1" interval="10" /> 
       <factory name="Tony" url="http://test3.com" thumbnail="http://test3.com/img1" interval="10" /> 
      </versions> 

Les données ci-dessus provient d'une table SQL/colonne qui stocke les données en tant que type de données XML. Quelqu'un peut-il me donner un exemple de code pour extraire les valeurs des éléments (peut-être assigner chaque valeur à la variable) afin que je puisse le passer à une vue?

Donc j'ai besoin d'obtenir les valeurs "vrai", "Ville", "Demme", "http://test1.com", "http://test3.com/img1....and ainsi de suite .

Quelle est la meilleure façon de présenter ces données à une vue?

+0

Do vous avez un problème spécifique avec l'analyse de ce xml ou n'avez-vous même pas essayé d'apprendre à le faire? http://whathaveyoutried.com – JeremyWeir

+0

Vous ne pouvez pas extraire des valeurs de XML en C#. C'est impossible. Vous devez utiliser C ou Java :) PS: Avez-vous * essayé * quelque chose encore? Avez-vous du code que vous pouvez montrer? Est-ce que "C# XML" a atteint zéro hits sur Google ??? – paulsm4

+0

est-ce une question différente de l'autre avec la même structure de données? –

Répondre

1

Mon idée est de créer des classes, correspondant à votre fichier Xml, une classe Version, une classe Factory.Charger le fichier xml, puis le transmettre à votre classe qui retourne votre dat a, voici comment je le fais:

La classe Version:

public class Version 
{ 
    public bool IsProduct { get; set; } 
    public string City { get; set; } 
    public List<Factory> Factories { get; set; } 

    //Create a version 
    public Version(XElement xVersion) 
    { 
     IsProduct = Convert.ToBoolean(xVersion.Element("Product").Value); 
     City = xVersion.Element("City").Value; 
     Factories = Factory.GetFactories(xVersion); 
    } 

    //Get the list of versions 
    public static List<Version> GetVersions(XElement xDocument) 
    { 
     if (xDocument == null) 
      return null; 

     List<Version> list = new List<Version>(); 
     var xVersions = xDocument.Elements("Version"); 

     foreach (var xVersion in xVersions) 
     { 
      list.Add(new Version(xVersion)); 
     } 

     return list; 
    } 
} 

La classe usine:

public class Factory 
{ 
    public string Name { get; set; } 
    public string Url { get; set; } 
    public string Thumbnail { get; set; } 
    public string Interval { get; set; } 

    //Create a factory 
    public Factory(XElement xFactory) 
    { 
     Name = xFactory.Attribute("Name").Value; 
     Url = xFactory.Attribute("Url").Value; 
     Thumbnail = xFactory.Attribute("Thumbnail").Value; 
     Interval = xFactory.Attribute("Interval").Value; 
    } 

    //Get the factories of a version 
    public static List<Factory> GetFactories(XElement xVersion) 
    { 
     var xFactories = xVersion.Elements("Factory"); 
     if (xFactories == null) 
      return null; 

     List<Factory> list = new List<Factory>(); 

     foreach (var xFactory in xFactories) 
     { 
      list.Add(new Factory(xFactory)); 
     } 

     return list; 
    } 
} 

Enfin, dans votre VGM Controller:

private void myMethod() 
    { 
     var xDocument = XElement.Load("XmlFilePath"); 
     var versions = Version.GetVersions(xDocument); 

     //And then, pass the -versions- to your typed view ^^ 
    } 
+0

Merci pour votre aide. Je vous en suis reconnaissant. Mise en œuvre maintenant – user1204195

+0

Vous êtes les bienvenus – SidAhmed

+0

Je suis presque là mais un problème. Les données XML proviennent d'une base de données SQL et non d'un fichier donc XElement.Load ("XmlFilePath"); throws and error "Caractères illégaux dans le chemin – user1204195

0
using System.Xml; 
    List<string> values= new List<string>();  
    XmlTextReader reader = new XmlTextReader ("books.xml"); 
    while (reader.Read()) 
    { 
      switch (reader.NodeType) 
      { 
        while (reader.MoveToNextAttribute()) // Read the attributes. 
        values.add(reader.Value); 
        break; 
     case XmlNodeType.Text: //Display the text in each element. 
        values.add(reader.Value); 
        break; 
     case XmlNodeType. EndElement: //Display the end of the element. 
      Console.WriteLine(">"); 
        break; 
      } 
     } 

maintenant vous avez une liste de valeurs. Attribuer au modèle, puis utiliser le modèle pour remplir la vue.

Questions connexes