none
XmlTextReader - leitura do arquivo RRS feed

  • Pergunta

  • Ola pessoal, não estou acostumado a trabalhar com XML.

    preciso ler um arquivo em formato XML e selecionar os dados que eu desejo para o meu gridview,

    o formato do xml é o seguinte :

    <historia>
      <Line>
        <ID>1</ID>
        <pergunta>Texto de leitura </pergunta>
        <idOrigem>1</idOrigem>
        <idCaminho>1</idCaminho>
       </Line>
      <Line>

    ....   


    </historia>

     

    No código :

    while (rd.Read())
    {

        objperguntas = new OBJPerguntas();

        objperguntas.Origem = int.Parse(rd["/historia/Line/IDOrigem"]);

     

    .....

     

    No caso não estou sabendo como montar o caminho do read para ele varrer os nodes corretamente (rd["/historia/Line/IDOrigem"])

     

    Alguem poderá me ajudar nesse caso?

     

     

     

    terça-feira, 5 de julho de 2011 16:25

Respostas

  •  

    Bom cara tentei simular um exemplo, segue abaixo o código esta funcionando, espero que te ajude:

    .aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormDefault.aspx.cs"
     Inherits="WebApplication1.WebFormDefault" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
     <title>Untitled Page</title>
    </head>
    <body>
     <form id="form1" runat="server">
     <div>
     <asp:GridView ID="gvHistoria" runat="server">
     </asp:GridView>
     </div>
     </form>
    </body>
    </html>
    
    

    .cs

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Xml;
    using System.Collections.Generic;
    
    namespace WebApplication1
    {
     public partial class WebFormDefault : System.Web.UI.Page
     {
     public class Historia
     {
      public int Id { get; set; }
      public string Pergunta { get; set; }
      public int IdOrigem { get; set; }
      public int IdCaminho { get; set; }
     }
    
     protected void Page_Load(object sender, EventArgs e)
     {
      //Lista de historia
      List<Historia> listaHistoria = new List<Historia>();
    
      //Caminho do xml
      string filename = "C:/historia.xml";
    
      //Instancia do XmlDocument para guarda xml
      XmlDocument xDocument = new XmlDocument();
    
      //Carregando xmlk
      xDocument.Load(filename);
    
      //Definindo nó principal
      XmlNode xNode = xDocument.SelectSingleNode("historia");
    
      //Varrendo xml e adicionando a lista
      foreach (XmlNode item1 in xNode)
      {
      //Instancia da classe historia para gravar os atributos
      Historia objHistoria = new Historia();
    
      objHistoria.Id = Convert.ToInt32(item1.SelectSingleNode("ID").InnerText);
      objHistoria.Pergunta = item1.SelectSingleNode("pergunta").InnerText;
      objHistoria.IdOrigem = Convert.ToInt32(item1.SelectSingleNode("idOrigem").InnerText);
      objHistoria.IdCaminho = Convert.ToInt32(item1.SelectSingleNode("idCaminho").InnerText);
    
      //Adicionando lista
      listaHistoria.Add(objHistoria);
      }
    
      //Preenchendo datagrid
      gvHistoria.DataSource = listaHistoria;
      gvHistoria.DataBind();
     }
     }
    }
    

     Para quem quiser, segue abaixo o xml

    <historia>
     <Line>
     <ID>1</ID>
     <pergunta>Texto de leitura </pergunta>
     <idOrigem>1</idOrigem>
     <idCaminho>1</idCaminho>
     </Line>
     <Line>
     <ID>2</ID>
     <pergunta>Texto de leitura </pergunta>
     <idOrigem>2</idOrigem>
     <idCaminho>2</idCaminho>
     </Line>
     <Line>
     <ID>3</ID>
     <pergunta>Texto de leitura </pergunta>
     <idOrigem>3</idOrigem>
     <idCaminho>3</idCaminho>
     </Line>
    </historia>
    

     


    Vitor Mendes | Seu feedback é muito importante para todos!

    terça-feira, 5 de julho de 2011 20:04

Todas as Respostas

  •  

    Bom cara tentei simular um exemplo, segue abaixo o código esta funcionando, espero que te ajude:

    .aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormDefault.aspx.cs"
     Inherits="WebApplication1.WebFormDefault" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
     <title>Untitled Page</title>
    </head>
    <body>
     <form id="form1" runat="server">
     <div>
     <asp:GridView ID="gvHistoria" runat="server">
     </asp:GridView>
     </div>
     </form>
    </body>
    </html>
    
    

    .cs

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Xml;
    using System.Collections.Generic;
    
    namespace WebApplication1
    {
     public partial class WebFormDefault : System.Web.UI.Page
     {
     public class Historia
     {
      public int Id { get; set; }
      public string Pergunta { get; set; }
      public int IdOrigem { get; set; }
      public int IdCaminho { get; set; }
     }
    
     protected void Page_Load(object sender, EventArgs e)
     {
      //Lista de historia
      List<Historia> listaHistoria = new List<Historia>();
    
      //Caminho do xml
      string filename = "C:/historia.xml";
    
      //Instancia do XmlDocument para guarda xml
      XmlDocument xDocument = new XmlDocument();
    
      //Carregando xmlk
      xDocument.Load(filename);
    
      //Definindo nó principal
      XmlNode xNode = xDocument.SelectSingleNode("historia");
    
      //Varrendo xml e adicionando a lista
      foreach (XmlNode item1 in xNode)
      {
      //Instancia da classe historia para gravar os atributos
      Historia objHistoria = new Historia();
    
      objHistoria.Id = Convert.ToInt32(item1.SelectSingleNode("ID").InnerText);
      objHistoria.Pergunta = item1.SelectSingleNode("pergunta").InnerText;
      objHistoria.IdOrigem = Convert.ToInt32(item1.SelectSingleNode("idOrigem").InnerText);
      objHistoria.IdCaminho = Convert.ToInt32(item1.SelectSingleNode("idCaminho").InnerText);
    
      //Adicionando lista
      listaHistoria.Add(objHistoria);
      }
    
      //Preenchendo datagrid
      gvHistoria.DataSource = listaHistoria;
      gvHistoria.DataBind();
     }
     }
    }
    

     Para quem quiser, segue abaixo o xml

    <historia>
     <Line>
     <ID>1</ID>
     <pergunta>Texto de leitura </pergunta>
     <idOrigem>1</idOrigem>
     <idCaminho>1</idCaminho>
     </Line>
     <Line>
     <ID>2</ID>
     <pergunta>Texto de leitura </pergunta>
     <idOrigem>2</idOrigem>
     <idCaminho>2</idCaminho>
     </Line>
     <Line>
     <ID>3</ID>
     <pergunta>Texto de leitura </pergunta>
     <idOrigem>3</idOrigem>
     <idCaminho>3</idCaminho>
     </Line>
    </historia>
    

     


    Vitor Mendes | Seu feedback é muito importante para todos!

    terça-feira, 5 de julho de 2011 20:04
  • Obrigado Vitor !!!

    Não só respondeu a minha pergunta mas como montou um bom tutorial.

     

    Show de bola!!!!!

    terça-feira, 5 de julho de 2011 20:43