XML - obtener informacion de nodos

 
Vista:
sin imagen de perfil

obtener informacion de nodos

Publicado por alexis (6 intervenciones) el 29/11/2012 22:37:27
buenas tardes que tal, tengo la siguiente consulta, estoy tratando de extraer la informacion del siguiente xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?xml version="1.0" encoding="UTF-8"?>
 
<RaizEjemplo  xsi:noNamespaceSchemaLocation="file:RaizEjemplo.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
<archivo num="1">
 
<general>
 
   <ROW>
 
      <nombre>juan</nombre>
 
      <apellido>perez</apellido>
 
      <direccion>panama</direccion>
 
   </ROW>
 
</general>
 
<otro1>
 
   <ROW>
 
      <telefono>000000</telefono>
 
   </ROW>
 
</otro1>
 
 
<general2>
 
   <ROW>
 
      <color>rojo</color>
 
      <ancho>10</ancho>
   </ROW>
 
</general2>
 
<otro2>
 
   <ROW>
 
      <cargo>empleado</cargo>
 
   </ROW>
 
</otro2>
 
</archivo>
<archivo num="2">
 
<general>
 
   <ROW>
 
      <nombre>juan</nombre>
 
      <apellido>perez</apellido>
 
      <direccion>panama</direccion>
 
   </ROW>
 
</general>
 
<otro1>
 
   <ROW>
 
      <telefono>000000</telefono>
 
   </ROW>
 
</otro1>
 
 
<general2>
 
   <ROW>
 
      <color>rojo</color>
 
      <ancho>10</ancho>
   </ROW>
 
</general2>
 
<otro2>
 
   <ROW>
 
      <cargo>empleado</cargo>
 
   </ROW>
 
</otro2>
 
</archivo>
</RaizEjemplo>


la idea principal es poder saber cuantos nodos con el nombre de "archivo" vienen en el xml ya que el xml pueden variar pueden venir nodos

<archivo num="1">

<archivo num="2">

<archivo num="3">


mi idea para obtener la informacion de los nodos es saber cuantos nodo con el nombre de archivo vienen en el xml, para recorrerlos con un ciclo for

obteniendo la info del nodo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string xmlArchivo = "";
 
XmlDocument documento = new XmlDocument();
 
documento.Load("C:\\Origen\\ejemplo.xml");
xmlArchivo = documento.InnerXml;
 
 
     //Se utiliza expresion regular para obtener la informacion del nodo de status del XML
            MatchCollection status = Regex.Matches(xmlArchivo, "<general><ROW><nombre>.+</nombre>");
 
            foreach (Match singleMatch in status)
            {
                nombre = Convert.ToString(singleMatch.Value.Replace("<general><ROW><nombre>", string.Empty).Replace("</nombre>", string.Empty));
            }


asi de uno en uno pero no es la forma obtima ya que estoy convirtiendo el xml en un string despues buscando la informacion en un nodo x y despues ir reemplazando para obtener la informacion, ya que donde dice nombre, apellido, direccion puede variar , puede venir el xml con los 3 nodos o 2 o 1

y de esa forma de extraerla convirtiendolo en string no me serviria

tambien considero que hacerlo de esa forma nodo por nodo seria un codigo quemado

intente tambien de esta otra forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
XmlDocument documento = new XmlDocument();
 
//Lee el XML
documento.LoadXml(xmlArchivo);
 
//Se obtiene el nodo del XML
XmlNodeList nodos = documento.SelectNodes("*/nombre");
 
foreach (XmlNode nodo in nodos)
{
    //Se obtiene el texto que se encuentra dentro del nodo (nombre) del XML
    ls_nombre = nodo.InnerText;
}


de esta forma tambien obtendo la informacion de x nodo pero el problema seria identificar cual nombre me estaria obteniendo si la de

<archivo num="1"> o la <archivo num="2"> etc

si alguien tiene una idea de como poder recorrer el xml ya sea de esta forma o linq o otra forma se le agadeceria para poder tener una idea mas clara

y que el codigo no sea tan quemado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

obtener informacion de nodos

Publicado por xve (21 intervenciones) el 30/11/2012 07:28:21
Hola Alexis, con que lenguaje de programación estas intentando recorrer el xml?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

obtener informacion de nodos

Publicado por alexis (6 intervenciones) el 30/11/2012 16:00:20
buenos dias estoy realizando el proyecto en .net en c #
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar