Foros del Web » Programación para mayores de 30 ;) » .NET »

Reiniciar lectura de un XML (volver al principio)

Estas en el tema de Reiniciar lectura de un XML (volver al principio) en el foro de .NET en Foros del Web. Hola, estoy leyendo un xml pero cuando llego al final me interesa reiniciar la lectura en determinados casos: Uso: Código PHP: StringReader stream  = new  StringReader ( ...
  #1 (permalink)  
Antiguo 26/08/2008, 06:58
 
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 348
Antigüedad: 21 años, 11 meses
Puntos: 8
Reiniciar lectura de un XML (volver al principio)

Hola, estoy leyendo un xml pero cuando llego al final me interesa reiniciar la lectura en determinados casos:
Uso:
Código PHP:
StringReader stream = new StringReader(folderList);
XmlTextReader reader null;
reader = new XmlTextReader(stream);
while (
reader.Read())
{
......... 
Como pongo el reader al principio del XML otra vez?
Gracias de antemano.
__________________
Bicis nuevas y de segunda mano: Bicibid
  #2 (permalink)  
Antiguo 26/08/2008, 18:28
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Reiniciar lectura de un XML (volver al principio)

No se puede el reader esta disenado para ser mas rapido y consumir menos recursos, tomando en cuenta que siempre sera leido hacia adelante.

Si requieres otro tipo de manipulacion podrias intentar cargando el archivo en un XmlDocument.


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 27/08/2008, 01:42
 
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 348
Antigüedad: 21 años, 11 meses
Puntos: 8
Respuesta: Reiniciar lectura de un XML (volver al principio)

Hola, gracias por la respuesta.
Con XmlDocument si podría volver al principio?
Me puedes decir como sería?, he mirado en el visual studio los metodos que tiene y no veo nada que diga "volverAlPrincipio()".
Saludos
__________________
Bicis nuevas y de segunda mano: Bicibid
  #4 (permalink)  
Antiguo 27/08/2008, 04:18
Avatar de juamurex  
Fecha de Ingreso: febrero-2007
Ubicación: Gandía (Valencia)
Mensajes: 18
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Reiniciar lectura de un XML (volver al principio)

Hola, si creas un XmlDocument como el siguiente:

Código:
            XmlDocument documento = new XmlDocument();
            documento.Load("doc.xml");

            XmlNode primerNodoDocumento = documento.FirstChild;
Con la propiedad FirstChild de XmlDocument obtienes el primer nodo del documento XML.
  #5 (permalink)  
Antiguo 28/08/2008, 03:10
 
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 348
Antigüedad: 21 años, 11 meses
Puntos: 8
Respuesta: Reiniciar lectura de un XML (volver al principio)

Ok gracias, he reducido la cantidad de código en muchas líneas con ésta clase.
Ahora me surge otro problema, después de leer el archivo xml que es de este tipo:
Código PHP:
<FOLDER ID_FOLDER="0" ID_PARENT="-1">
    <
DESC_FOLDER>The Company</DESC_FOLDER>
    <
TOOLTIP>Company</TOOLTIP>
</
FOLDER>
<
FOLDER ID_FOLDER="1" ID_PARENT="0">
    <
DESC_FOLDER>Central</DESC_FOLDER>
    <
TOOLTIP>Central of the Company</TOOLTIP>
</
FOLDER>
.... 
guardo en una lista todos los FOLDERS del xml, ahora lo que quiero es mostrar en un treeFolder el contenido de esa lista en orden jerarquico, es decir, Central es hijo de The company ya que su ID_PARENT es igual al ID_FOLDER de The Company, pero no me lo hace bien, me repite campos. Si alguien me puediese revisar el código para ver que falla lo agradecería.
Código PHP:
protected void LoadFolders(string folderList)
        {
            
string parent string.Empty;
            
string id string.Empty, idAux string.Empty;
            
string nombre string.Empty;

            
string text string.Empty;
            
string tooltip string.Empty;

            
XmlDocument xDoc = new XmlDocument();
            
xDoc.LoadXml(folderList);
            
XmlNode nodenode xDoc.DocumentElement;

            List<
Nodonodos = new List<Nodo>();

            foreach (
XmlNode node1 in node.ChildNodes)
            {
                if (
node1.Name == "FOLDER")
                {
                    
id node1.Attributes["ID_FOLDER"].Value;
                    
parent node1.Attributes["ID_PARENT"].Value;
                }
                foreach (
XmlNode node2 in node1.ChildNodes)
                    if (
node2.Name == "DESC_FOLDER")
                    {
                        
text node2.InnerText;
                    }
                    else if (
node2.Name == "TOOLTIP")
                    {
                        
tooltip node2.InnerText;
                    }
                
nodos.Add(new Nodo(idparenttexttooltip));
            }
            
System.Web.UI.WebControls.TreeNode parentNode = new System.Web.UI.WebControls.TreeNode();
            
string idPadre string.Empty;
            foreach (
Nodo nodo in nodos)
            {
                List<
Nodohijos FindChildrens(nodosnodo);
                if (
hijos != null)
                {
                    foreach (
Nodo hijo in hijos)
                    {
                        
System.Web.UI.WebControls.TreeNode childNode = new System.Web.UI.WebControls.TreeNode();
                        
System.Web.UI.WebControls.TreeNode parentNodeAux = new System.Web.UI.WebControls.TreeNode();

                        
parentNodeAux.Text nodo.Text;
                        
parentNodeAux.ToolTip nodo.Tooltip;
                        
parentNodeAux.Value nodo.Id;

                        
childNode.Text hijo.Text;
                        
childNode.ToolTip hijo.Tooltip;
                        
childNode.Value hijo.Id;

                        if (
nodo.Parent.Equals("-1"))
                        {
                            
parentNode.Text nodo.Text;
                            
parentNode.Value nodo.Id;
                            
parentNode.ToolTip nodo.Tooltip;
                            
parentNode.ChildNodes.Add(childNode);
                        }
                        else
                        {
                            
parentNodeAux.ChildNodes.Add(childNode);
                            
idPadre buscarPadre(nodo.Parentnodos);
                            if (
idPadre != null)
                                if (
idPadre == nodo.Parent)
                                        
parentNode.ChildNodes.Add(parentNodeAux);
                        }
                    }

                }
            }
            
treeFolders.Nodes.Add(parentNode);
            
treeFolders.ExpandAll();
        } 
Gracias
__________________
Bicis nuevas y de segunda mano: Bicibid
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:32.