Usuário com melhor resposta
XmlTextReader - leitura do arquivo

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?
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!
- Marcado como Resposta leandro Bertanha terça-feira, 5 de julho de 2011 20:40
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!
- Marcado como Resposta leandro Bertanha terça-feira, 5 de julho de 2011 20:40
-